Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP APC - Why is loading cached array op codes slow?

I'm using APC to reduce my loading time for my PHP files. My files load very fast, except for one file where I define more than 100 arrays. This 270 kb file takes 200 ms to load. The rest of the files are full of objects, methods, and functions.

I'm wondering: does OP code caching not work as well for arrays?

My APC cache should be big enough to handle all of my classes. Currently 40% of my cache is free. My hit rate is 99%.

apc.shm_size=32 M
apc.max_file_size = 1M
apc.shm_segments= 1

APC 3.1.6

I'm using PHP 5.2, Apache 2, and Windows Vista.

like image 472
Aaron Kreider Avatar asked May 19 '26 17:05

Aaron Kreider


1 Answers

All your arrays need to be serialized when stored in cache and then unserialised again when you load them from cache, this costs time and might be the significant factor of speed loss that you experience. (for your info: Serialisation)

One way to speed up serialisation a bit is to use igbinary, igbinary can be used seamlessly with APC by putting apc.serializer=igbinary in php.ini or in the ini file that goes over APC. (note: this requires APC >= 3.1.7)

You could also put apc.stat (in the same ini file) as 0 so that it only check files for modifications once as opposed to every time.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!