大纲:
1、php加速器原理
2、几种流行的php加速器的安装与配置
3、比较
一、PHP加速器原理
PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提高了不少。
Apache中使用mod_php的请求、响应执行流程:
Apache接收请求。
Apache传递请求给mod_php。
mod_php定位磁盘文件,并加载到内存中。
mod_php编译源代码成为opcode树。
mod_php执行opcode树。
PHP加速器相应的就是第四步,它的目的就是防止PHP每次请求都重复编译PHP代码,因为在高访问量的网站上,大量的编译往往没有执行速度快呢?所以这里面有个瓶颈就是PHP的重复编译既影响了速度又加载了服务器负载,为了解决此问题,PHP加速器就这样诞生了。
每一次的请求都会反复执行Parse-Compile-Execute,而在实际中,服务端的php代码一般都不会发生变化,我们每次请求都要反复执行一些没有必要的操作,这直接影响了PHP的性能,我们到这里肯定会想到为什么不用缓存了?目前已经有很多成熟的缓存机制,用在PHP代码的执行方面应该绰绰有余,就算我们的PHP代码会发生变化,我们也可以用一种成熟的算法来保证代码改变后重新缓存,这一切都不是问题。是的,这就是PHP加速器的工作原理:
缓存前 缓存后
二、几种流行的php加速器的安装与配置
1、安装配置APC
APC全称是Alternative PHP Cache,它是PHP PECL中的一个扩展。
$ wget http://pecl.php.net/get/APC-3.0.19.tgz $ tar xvzf APC-3.0.19.tgz $ cd APC-3.0.19/APC-3.0.19 $ /usr/local/php/bin/phpize $ ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php/bin/php-config $ make $ make install
下面我们再配置APC,因为我的PECL扩展路径改变了,所以我得移动下编译好的文件:
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/PECL
然后我们再编辑php.ini文件进行配置,请把下面的代码加入到php.ini中即可:
extension_dir = "/usr/local/php/lib/php/extensions/PECL" extension = apc.so ; APC apc.enabled = 1 apc.shm_segments = 1 apc.shm_size = 64 apc.optimization = 1 apc.num_files_hint = 0 apc.ttl = 0 apc.gc_ttl = 3600 apc.cache_by_default = on
这样重启apache就会在phpinfo()信息中显示。
2、安装配置eAccelerator
eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。安装如下:
$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2 $ tar -jxf eaccelerator-0.9.5.tar.bz2 $ cd eaccelerator-0.9.5 $ /usr/local/php/bin/phpize $./configure �Cenable-eaccelerator=shared �Cwith-php-config=/usr/local/php/bin/php-config $ make $ make install $ mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL
将下面代码加入php.ini文件中
extension = eaccelerator.so ; eAccelerator eaccelerator.shm_size = "16" eaccelerator.cache_dir = "/tmp/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "1" eaccelerator.debug = "0" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" 创建缓存目录,重启apache $mkdir /tmp/eaccelerator $chmod 777 /tmp/eaccelerator $/usr/local/apache/apachectl restart
在phpinfo()检查是否安装成功.
3、安装配置XCache
XCache作为国人自己开发的东西,做小菜鸟的我也感到骄傲,而且XCache无论在速度还是性能上都做的不错。下面就赶紧让我们品尝它吧!
$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz $tar xvzf xcache-1.2.2.tar.gz $cd xcache-1.2.2 $/usr/local/php/bin/phpize $./configure �Cenable-xcache �Cenable-xcache-coverager �Cwith-php-config=/usr/local/php/php-config $make $sudo make install $sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL
在php.ini添加配置信息:
extension = xcache.so ; xcache xcache.admin.user = "admin" xcache.admin.pass = "(执行) echo ’(你的密码)’|md5sum(得出的密文)" ; xcache.size = 24M xcache.shm_scheme = "mmap" xcache.count = 2 xcache.slots = 8k xcache.ttl = 0 xcache.gc_interval = 0 xcache.var_size = 8M xcache.var_count = 1 xcache.var_slots = 8k xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = On xcache.mmap_path = "/tmp/xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Off ; xcache.coverager = On xcache.coveragedump_directory = "" 创建缓存目录,重启apache $mkdir /tmp/xcache $chmod 777 /tmp/xcache $/usr/local/apache/bin/apachectl restart
三、比较
转自:http://www.vpser.net/opt/apc-eaccelerator-xcache.html