新一代 PHP 加速插件 Zend Opcache

我的程序员人生 2014-11-13

目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache( http://pecl.php.net/package/ZendOpcache ),功能和前三者相似但又有少许不同,缓存速度据说比它们更快.

主 要原理: 就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的, 像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加 快。

Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:

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



如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 表示安装完成,下面要修改php的配置文件让它生效

在 php.ini 的最后面加入下面几行

zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1



128意思是给它分配128M内存,重新启动apache, 打印phpinfo();信息后, 即可找到Zend OPcache信息. 如图片

新一代 PHP 加速插件 Zend Opcache
新一代 PHP 加速插件 Zend Opcache

在phpinfo()信息中, 目前来看有两条信息犹为重要:

Cache hits     (高级缓存命中)
Cache misses  (高级缓存未命中)


在这两条信息中即可观察缓存运行情况, 一目了然
高速缓存带来哪些优化呢? 对代码运行有多大帮助?

我们做个测试, 验证一下什么是opcache.

<?php
  echo 'opcache';
?>


这是一段非常简单的php代码, 请保存为demo.php文件然后访问, 随意刷新, Cache hits数值会不停地增加, 说明起作用了,

然后你修改代码为:

<?php
   echo 'cache new';
?>


再刷新demo.php, 应该可以看到效果, 打印出来的值仍然是opcache, 即源码被缓存了, 它不再解析demo.php文件, 试着不停地刷新, 检测多少秒后才更新.
可设置:

opcache.force_restart_timeout=180

的时间来控制更新速度.

这就类似于web项目中的静态文件缓存一下, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要open文件, 解析代码, 执行代码这一过程, 而opcache即可解决这个问题, 代码会被高速缓存起来, 提升访问速度.

如果嫌phpinfo()不直观可以装个PHP文件查看,地址 https://g ist.github.com/JingwenTian/9508141,把上面的代码保存为一个php文件放到你的网站目录下面打开就可以看到.

个人建议: 本地环境非必要情况下不要开启opcache, 服务器上可以开启, 必竟不是天天更新. 缓存起来有它的历史意义.

参考阅读:

http://blog.sina.com.cn/s/blog_5f5a3dff0101gf9e.html

http://www.oschina.net/question/998019_110792

http://cnzhx.net/blog/zendopcache-accelerate-php/

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

转载自: http://www.jingwentian.com/t-173

相关推荐