Optimizer+ 是 Zend 开发的闭源但能够无偿使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具。如今,Zend 科技公司将 Optimizer+ 在 PHP License 下开源成为 Zend Opcache。php
GitHub地址:https://github.com/zendtech/ZendOptimizerPlusgit
Zend OPcache 经过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供之后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。github
1、什么是 opcode 缓存?数据库
当解释器完成对脚本代码的分析后,便将它们生成能够直接运行的中间代码,也称为操做码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减小 CPU 和内存开销。若是动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操做,好比数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提高是很是有限的。可是既然 opcode cache 能带来 CPU 和内存开销的下降,这总归是好事 —— 本着环保的态度,也应该尽可能减小消耗不是? :D缓存
现代操做码缓存器(Optimizer+,APC2.0+,其余)使用共享内存进行存储,而且能够直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,一般下降了总体服务器的内存消耗,并且不多有缺点。bash
2、Optimizer+ 与 APC 的优缺点对比服务器
Optimizer+ 于 2013年3月中旬更名为 Opcache。wordpress
根据 PHP wiki 上的讨论,Zend Opcache 即将整合到 php 5.5 中。做为 APC 的竞争对手,新生的 Zend Opcache 颇有可能取代 APC 的位置,虽然 OptimizerPlus 没有象 APC 那样的 user cache 功能。函数
OPTIMIZER+ 相对 APC 的优势php-fpm
一、性能。根据测试,Zend Optimizer+ 始终优于 APC。随代码差别,每秒钟处理的请求数高 5~20%。Google doc 上记录的测试结果中,WordPress 2.1.1(不知道为何不用个新版本的 WP 来测试),性能提升约 8%。理论上来讲,对于 WP 3.5.1,性能应该也能获得大约 5~10% 的提高吧。对于运行 WordPress 的服务器而言,使用 Optimizer+ 能够显著下降 CPU 使用率和提升页面加载速度(graphics here)。
二、支持新的 PHP 版本。Zend 和 PHP 社区都会帮助 Optimizer+ 可以支持最新版本的 PHP。
三、可靠性。Optimizer+ 拥有可选的损坏检测能力,能够防止因数据损坏而致使的服务器崩溃。
四、更好的兼容性。PHP 社区打算让 Optimizer+ 与社区支持的全部 PHP 版本相兼容
APC 相对 OPTIMIZER+ 的优点
一、APC 有数据缓存 API,而 Optimizer+ 没有。
二、APC 可以回收旧的无效的脚本占用的内存。APC 有内存管理器,能够将那些再也不使用的脚本关联的内存进行回收。而 Optimizer+ 不一样,它将这样的内存标记为“脏的”,但并不会回收它们。一旦“脏的”内存占用配置阈值的百分比达到必定值,Optimizer+ 就将本身从新启动。这种行为在稳定性上既有优点也有劣势。
3、编译安装 Zend Opcache
如今已经可使用 Zend Opcache 替代 APC 做为 PHP 优化加速工具了。目前的 Zend Opcode 兼容 PHP 5.2.*、5.3.*、5.4.* 和 PHP-5.5 开发版。不过,未来会取消对 PHP 5.2 的支持。
注意:Zend Opcache 与 eaccelerator 相冲突。要安装 Zend Opcache,可能须要先卸载 eaccelerator —— 若是你用了这个加速模块的话。
编译安装 Zend Opcache
#下载源代码 (wget -c 代码地址)
https://github.com/zendtech/ZendOptimizerPlus/archive/master.zip
#切换解压后的源码目录,利用phpize执行安装
cd /usr/local/src/ZendOptimizerPlus-master /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
#编辑 php.ini,追加以下内容:
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so opcache.enable=1 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
#重启php-fpm
service php-fpm restart
opcache相关参数,可参考:
GitHub:https://github.com/zendtech/ZendOptimizerPlus
上述github页面中,有个推荐配置:
We recommend the following configuration options for best performance
in a production environment.opcache.enable=1
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
PHP手册:http://php.net/manual/zh/opcache.configuration.php
4、查看 Zend Opcache 运行状态
经过 phpinfo(); 函数,可查看 opcache 运行状态:
注意:Used memory、Free memory 的单位是 字节 。