新一代 PHP 加速插件 Zend Opcache

参考:http://www.laogui.com/Zend-Opcachephp

 

你们知道目前PHP的缓存插件通常有三个:APCeAcceleratorXCache,但将来它们可能都会消失,由于PHP 5.5已经集成Zend Opcache,功能和前三者类似但又有少量不一样,缓存速度听说比它们更快(注意:只是听说,我没测试过)。

这几个PHP加速插件的主要原理都相同,就是把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
phpize
若是找不到phpize 的话本身找PHP路径,个人在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
css


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

PHP5.3.27 的扩展php_opcache.dlllinux

测试平台:Windows 2008 R2 x64 (IIS7.5 FastCGI,Apache2.2.23,Apache2.4.3, Nginx 1.2.9)git

包含 Non Thread Safe 和 Thread Safegithub

若是用的是 FastCGI 请使用 Non Thread Safe 版web

php_opcache.dll 的使用方法apache


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

[opcache]缓存

zend_extension = "D:\phpecorg\PHP\ext\php_opcache.dll" 

//或 linux下:zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so

opcache.enable = 1

opcache.enable_cli = 1

opcache.memory_consumption = 256

opcache.interned_strings_buffer = 8

opcache.max_accelerated_files = 4096

opcache.max_wasted_percentage = 5

opcache.validate_timestamps = 1

opcache.revalidate_freq = 60

opcache.fast_shutdown = 1

opcache.optimization_level = 0xffffffff



128意思是给它分配128M内存,而后重启apache,用phpinfo查看是否生效,显示下面的信息就说明生效了



在phpinfo页面的下面能够看到的运行状态



若是嫌这个不直观能够装个PHP文件查看,地址在https://gist.github.com/ck-on/4959032,把上面的代码保存为一个php文件放到你的网站目录下面打开就能够看到:



命中率100%。

Zend Opcache由于最近才出来,如今仍是测试版,相信在将来几年会愈来愈流行,如今真没多少人用。目前测试来看还比较稳定,我已经在 vbulletin论坛下运行了几天,不过没看出和APC、xcache有啥区别,只是最近个人APC老让apache崩溃(多是apache和php版本太新的缘由),想换个试试,毕竟Zend Opcache和APC都是php官方的,值得信赖。

 


从新启动apache, 打印phpinfo();信息后, 便可找到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便可解决这个问题, 代码会被高速缓存起来, 提高访问速度.

相关文章
相关标签/搜索