APC、eAccelerator、XCache、Opcache的区别与比较
目录
APC、eAccelerator、XCache、Opcache都是PHP加速器。
性能方面:
zend opcache 比apc性能要好。效率大概提升 5%-9% 。
- opcache 加速性能 比 xcache 优秀10%-27%(include),opcache对cpu密集运算有一定的加速效果,
- opcache xcache 在实际应用中的加速效果(tp框架) 约为不加速的2-3倍
- php7在cpu密集型运算中 比php5.6 提升有50%左右.非cpu密集运算 php5.3性能优于 php7;
1 APC
1.1 APC是什么
APC全称是Alternative PHP Cache,它是PHP PECL中的一个扩展。
1.2 APC安装
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扩展路径改变了,所以我得移动下编译好的文件:
$ mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/PECL
1.3 APC配置
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 Opcache
2.1 Opcache是什么
新一代PHP加速器,由Zend公司研发,其实现原理与Xcache类似,都是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,但性能却比Xcache更加优越。
2.2 安装Opcache
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
2.3 配置Opcache
配置文件设置,可直接在php.ini的最后添加如下内容,但在此在PHP配置文件的扫描目录php.d下配置新文件opcache.ini,易于管理,php-config-scan-dir是在编译安装PHP时定义的
vi /etc/php.d/opcache.ini
[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/opcache.so
opcache.memory_consumption=128 # 分配的内存大小,单位MB,即能够存储多少预编译的PHP代码
opcache.interned_strings_buffer=8 # interned字符串占内存大小,单位MB
opcache.max_accelerated_files=4000 # 允许缓存的文件最大数量
opcache.revalidate_freq=60 # 多长时间检查文件时间戳,以改变共享内存分配,单位为s
opcache.fast_shutdown=1 # 是否开启快速关闭队列功能,1为开启
opcache.enable_cli=1 # 允许缓存CLI下的PHP程序
检查模块安装成功:
/usr/local/php/bin/php -m |grep -i opcache
3 eAccelerator
3.1 eAccelerator是什么
eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。安装如下:
3.2 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 –enable-eaccelerator=shared –with-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
3.3 eAccelerator配置
将下面代码加入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()检查是否安装成功.
4 XCache
4.1 XCache是什么
XCache是国人自己开发的东西,性能比早期的eAccelerator加速器要优良。
4.2 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 –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config
$make
$make install
$mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL
4.3 XCache配置
在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