大纲:

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中的一个扩展。

$wgethttp://pecl.php.net/get/APC-3.0.19.tgz$tarxvzfAPC-3.0.19.tgz$cdAPC-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$makeinstall

下面我们再配置APC,因为我的PECL扩展路径改变了,所以我得移动下编译好的文件:

$sudomv/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;APCapc.enabled=1apc.shm_segments=1apc.shm_size=64apc.optimization=1apc.num_files_hint=0apc.ttl=0apc.gc_ttl=3600apc.cache_by_default=on

这样重启apache就会在phpinfo()信息中显示。

2、安装配置eAccelerator

eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。安装如下:

$wgethttp://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2$tar-jxfeaccelerator-0.9.5.tar.bz2$cdeaccelerator-0.9.5$/usr/local/php/bin/phpize$./configure–enable-eaccelerator=shared–with-php-config=/usr/local/php/bin/php-config$make$makeinstall$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;eAcceleratoreaccelerator.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$chmod777/tmp/eaccelerator$/usr/local/apache/apachectlrestart

在phpinfo()检查是否安装成功.


3、安装配置XCache

XCache作为国人自己开发的东西,做小菜鸟的我也感到骄傲,而且XCache无论在速度还是性能上都做的不错。下面就赶紧让我们品尝它吧!

$wgethttp://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz$tarxvzfxcache-1.2.2.tar.gz$cdxcache-1.2.2$/usr/local/php/bin/phpize$./configure–enable-xcache–enable-xcache-coverager–with-php-config=/usr/local/php/php-config$make$sudomakeinstall$sudomv/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;xcachexcache.admin.user="admin"xcache.admin.pass="(执行)echo’(你的密码)’|md5sum(得出的密文)";xcache.size=24Mxcache.shm_scheme="mmap"xcache.count=2xcache.slots=8kxcache.ttl=0xcache.gc_interval=0xcache.var_size=8Mxcache.var_count=1xcache.var_slots=8kxcache.var_ttl=0xcache.var_maxttl=0xcache.var_gc_interval=300xcache.test=Offxcache.readonly_protection=Onxcache.mmap_path="/tmp/xcache"xcache.coredump_directory=""xcache.cacher=Onxcache.stat=Onxcache.optimizer=Off;xcache.coverager=Onxcache.coveragedump_directory=""创建缓存目录,重启apache$mkdir/tmp/xcache$chmod777/tmp/xcache$/usr/local/apache/bin/apachectlrestart


三、比较

转自:http://www.vpser.net/opt/apc-eaccelerator-xcache.html