Installing Alternative PHP Cache on CentOS4 Or Red Hat Enterprise 4
Submit Articles Back to Articles
If you look at a PHP source file you will notice one thing. It's a source
file. Not particularly surprising, but think about when you deploy a PHP
application, what do you deploy? PHP source files. Now for many other languages;
Java, C, etc when you deploy an application you deploy the compiled file. So,
the question that you want to ask yourself is this, how much time does a PHP
application spend compiling source files vs running the code? I'll answer that
for you, a lot.
There are advantages to being able to deploy source files though. It makes it
easy to do on the fly modifications or bug fixes to a program, much like we used
to do in the early BASIC languages. Just change the file and the next time it's
accessed your change is reflected. So, how do we keep the dynamic nature of PHP,
but not recompile our files every time they are accessed?
A PHP cache. It's surprising to me that this concept isn't built into the
base PHP engine, but perhaps that's because some company's can sell this add on
to speed up PHP. Luckily for us, some companies/open source projects provide
this plug in to PHP at no charge. These plug ins are generally known as PHP
accelerators, some of them do some optimization and then caching and some only
do caching. I'm not going to pass judgement on which one is the best, any of
them are better than nothing, but I decided to use APC, the Alternative PHP
Cache. I chose this one because it is still in active development and is open
source and free.
Alternative php cache can be found at php.net, just look down the left column
for APC. It comes in source form, so you will need to compile it before
installing it, don't worry about that part. If you're using Red Hat 4 or CentOS4
I'll tell you exactly how to do it. If you're using something else, you'll need
the same tools, but getting the tools might be a bit different.
1. The Tools Do you know how many web sites, forums and blogs I went to with
my error messages before I found the answers as to what I was missing when I was
trying to install APC - Alternative PHP Cache? Two days worth, but I finally
found the correct combination and it's really quite obvious as is everything
once you know the answer. There are three sets of dev tools that you will need.
1a. You'll need a package called "Development Tools" this will include all
the important dev tools like the GCC compiler, etc. 1b. You'll need a package
called php-devel which as you might guess are development tools for PHP 1c.
You'll need a package called httpd-devel which of course are dev tools for
Apache web server.
On Red Hat or CentOS getting these should be as easy as the following 3
yum groupinstall "Development Tools" yum install php-devel yum install
You'll do these three one at a time and follow any instructions (usually just
Now it's time to follow the instructions contained in the APC package. Since
these may change over time I'm not going to go through them. They are very
complete. If you follow the instructions and get an apc.so file out of it, then
you're all set, just modify your php.ini file and you're good to go.
There are two problems that I encountered that you may encounter too. The
first is an error when running phpize. I ignored this error and everything
succeeded okay, but not before I spent hours looking for the solution to this
error. Here is the error.
configure.in:9: warning: underquoted definition of PHP_WITH_PHP_CONFIG run
info '(automake)Extending aclocal' or see
configure.in:32: warning: underquoted definition of PHP_EXT_BUILDDIR
configure.in:33: warning: underquoted definition of PHP_EXT_DIR configure.in:34:
warning: underquoted definition of PHP_EXT_SRCDIR configure.in:35: warning:
underquoted definition of PHP_ALWAYS_SHARED acinclude.m4:19: warning:
underquoted definition of PHP_PROG_RE2C
People would have had me updating my PHP version from 4.3.9 and everything
else under the sun to get rid of this error, but in the end it didn't matter. My
APC compiled and installed nicely and I am good to go.
The other slight problem that I ran into was the location of php-config. The
install instructions wanted me to do the following: ./configure --enable-apc-mmap
However my php-config is in /usr/bin/php-config. Making that change allowed
this part to work.
So, have at it, once it's done you can expect to see huge improvements in
your web site response times and reductions on your CPU load. One more quick
note, My server hosts about 20 web sites, but only 3 or 4 are really busy. To
reduce the memory footprint of caching everything for all 20 sites I used the
apc.filters property. Although this property is slightly flawed for non
qualified includes, it worked nicely for my Serendipity blogs. Your mileage with
this property will vary according to the software you are using and how it does
About the Author
If you'd like more
optimization tips, go to Jon's Open Source Depot blog. For do's and do nots
of the AdSense world, visit Project Adsense at ==>
Follow us @Scopulus_News
Article Published/Sorted/Amended on Scopulus 2007-10-29 16:11:36 in Computer Articles