As I deployed more applications and web sites on my server, I started running into resource issues. Since most of the applications I write are in Java, I run Tomcat on my Linux server. But I also run Apache as a front-end host for Tomcat as well as several PHP applications like WordPress, Vanilla and a few other PHP applications that I’ve written. I am not an expert PHP developer by any stretch of the imagination but I tinker with enough PHP that I decided to take a look at PHP Acceleration software.
For the uninitiated, PHP is a scripting language that is interpreted and compiled on the server side. PHP Accelerators offer caching of the PHP scripts in their compiled state along with optimization. There are several PHP optimization products out there and I decided to give eAccelerator, XCache and APC a try on my Linux machine. For the record, the box is running CentOS 4.4 which is essentially a distribution that is repackaged Red Hat Enterprise Linux 4.x.
- eAccelerator – eAccelerator is a free open-source PHP accelerator, optimizer, and dynamic content cache. It increases the performance of PHP scripts by caching them in their compiled state, so that the overhead of compiling is almost completely eliminated. It also optimizes scripts to speed up their execution. eAccelerator typically reduces server load and increases the speed of your PHP code by 1-10 times.
- XCache – XCache is a fast, stable PHP opcode cacher that has been tested and is now running on production servers under high load.
- APC – The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. It was conceived of to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.
I compiled and installed these PHP accelerators and found APC worked the best for me. XCache seemed to work well and actually provided a nice admin application that lets you peek inside the cache to see what’s cached, the hit/miss ratio, etc. eAccelerator also seemed to work well and offered a great performance boost but caused segmentation fault and made the Apache web server unusable. It could have been bad PHP code that was causing the segmentation faults but I didn’t really spend any times getting to the root cause. APC just worked, pretty much like XCache but seemed to offer a little better performance. Now I didn’t really perform any empirical testing here â€“ I simply relied on my website monitor GrabPERF as I ran each PHP extension for a few days. Your mileage may vary based on your server architecture, application, lunar phase, etc but PHP APC seemed to work the best for me.
Thanks for sharing your experience. Could you please reveal which PHP, Apache and APC version have you used to deploy your web apps? Does APC need some tweak to make it work at best performance?
APC doesn’t install its “cache peeking” code by default, because anything which installs web-code needs to be thoroughly secured. Place the apc.php from the apc tarball, somewhere secure (i.e host/ip/password protected) and it should give you some info on your cache usage.
Or if you want to see a quick demo, search around for ‘”APC INFO” apc.php’ to find people who don’t protect it enough.
And treat your APC nice – feed it enough shm_size and don’t let it fragment beyond 600/700 fragments … and it’ll play nice to you as well 🙂
I was looking for an example of captcha use with a single submit for the form.
This page is a heavy example !
Is there a light one ?