三款免费的PHP加速器:APC、eAccelerator、XCache比较
一、PHP加速器介绍
PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提 高了不少。
Apache中使用mod_php的请求、响应执行流程:
1、Apache接收请求。
2、Apache传递请求给mod_php。
3、mod_php定位磁盘文件,并加载到内存中。
4、mod_php编译源代码成为opcode树。
5、mod_php执行opcode树。
PHP加速器相应的就是第四步,它的目的就是防止PHP每次请求都重复编译PHP代码,因为在高访问量的网站上,大量的编译往往没有执行速度快呢?所以这 里面有个瓶颈就是PHP的重复编译既影响了速度又加载了服务器负载,为了解决此问题,PHP加速器就这样诞生了。
二、PHP加速器安装与配置
1、 安装配置APC
APC全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,它是PHP PECL中的一个扩展,好像是facebook在使用它,下面开始安装(ubuntu环境):
1$wget http://pecl.php.net/get/APC-3.0.19.tgz
2$tar xvzf APC-3.0.19.tgz
3$cd APC-3.0.19/APC-3.0.19
4$/usr/local/php/bin/phpize
5$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config
6$make
7$sudo make install
下面我们再配置APC,因为我的PECL扩展路径改变了,所以我得移动下编译好的文件:
1$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中即可:
1extension_dir = "/usr/local/php/lib/php/extensions/PECL"
2extension = apc.so;
3
4apc.enabled = 1
5apc.shm_segments = 1
6apc.shm_size = 64
7apc.optimization = 1
8apc.num_files_hint = 0
9apc.ttl = 0
10apc.gc_ttl = 3600
11apc.cache_by_default = on
这样重启apache就会在 phpinfo()信息中显示。
2、安装配置eAccelerator
eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发 eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。安装如下:
1$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2
2$tar -jxf eaccelerator-0.9.5.tar.bz2
3$cd eaccelerator-0.9.5
4$/usr/local/php/bin/phpize
5$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
6$make
7$sudo make install
8$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL
将下面代码加入php.ini文件中
1extension = eaccelerator.so;
2eaccelerator.shm_size = "16"
3eaccelerator.cache_dir = "/tmp/eaccelerator"
4eaccelerator.enable = "1"
5eaccelerator.optimizer = "1"
6eaccelerator.check_mtime = "1"
7eaccelerator.debug = "0"
8eaccelerator.filter = ""
9eaccelerator.shm_max = "0"
10eaccelerator.shm_ttl = "0"
11eaccelerator.prune_period = "0"
12eaccelerator.shm_only = "0"
13eaccelerator.compress = "1"
14eaccelerator.compress_level = "9"
15创建缓存目录,重启apache
16$sudo mkdir /tmp/eaccelerator
17$sudo chmod 777 /tmp/eaccelerator
18$sudo /usr/local/apache/apachectl restart
在phpinfo()检查是否安装成功.
3、安装 配置XCache
XCache作为国人自己开发的东西,做小菜鸟的我也感到骄傲,而且XCache无论在速度还是性能上都做的不错。下面就 赶紧让我们品尝它吧!
1$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
2$tar xvzf xcache-1.2.2.tar.gz
3$cd xcache-1.2.2
4$/usr/local/php/bin/phpize
5$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config
6$make
7$sudo make install
8$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL
9在php.ini添加配置信息:
10extension = xcache.so
11; xcache
12xcache.admin.user = "admin"
13xcache.admin.pass = "(执行) echo ’(你的密码)’|md5sum(得出的密文)"
14;
15xcache.size = 24M
16xcache.shm_scheme = "mmap"
17xcache.count = 2
18xcache.slots = 8k
19xcache.ttl = 0
20xcache.gc_interval = 0
21xcache.var_size = 8M
22xcache.var_count = 1
23xcache.var_slots = 8k
24xcache.var_ttl = 0
25xcache.var_maxttl = 0
26xcache.var_gc_interval = 300
27xcache.test = Off
28xcache.readonly_protection = On
29xcache.mmap_path = "/tmp/xcache"
30xcache.coredump_directory = ""
31xcache.cacher = On
32xcache.stat = On
33xcache.optimizer = Off
34;
35xcache.coverager = On
36xcache.coveragedump_directory = ""
37创建缓存 目录,重启apache
38$sudo mkdir /tmp/xcache
39$sudo chmod 777 /tmp/xcache
40$sudo /usr/local/apache/bin/apachectl restart
去查看 phpinfo()信息吧!
eaccelerator一般是配合 zend optimizer 一起使用的。zend optimizer 是优化php代码的作用,本身不起加速作用的。但APC与zend optimizer 不兼容,也就是说如果使用APC加速时就不要使用zend optimizer优化代码。而XCache是更新最快的。而具体三者的使用,也是公说公有理,婆说婆有理,在此不作比较。相要比较可以在同一主机上各自安装试下,通过网站压力测试软件比较下性能。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/phpjsbj/663.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.