PS:Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具。现在,Zend 科技公司将 Optimizer+ 在 php License 下开源成为 Zend Opcache。
Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。
-
什么是 opcode 缓存?
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事 —— 本着环保的态度,也应该尽量减少消耗不是?
现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。 -
Optimizer+ 与 APC 的优缺点对比
Optimizer+ 于 2013年3月中旬改名为 Opcache。
很多人都在问 PHP 加速缓存哪个好,毫无疑问 Zend Opcache 是首选。为什么?因为,这是官方出品的,在PHP5.5开始,已经随着PHP的源代码一起发布了。作为 APC 的竞争对手,新生的 Zend Opcache 很有可能取代 APC 的位置,虽然 OptimizerPlus 没有象 APC 那样的 user cache 功能。OPTIMIZER+ 相对 APC 的优点
- 性能。根据测试,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+ 就将自己重新启动。这种行为在稳定性上既有优势也有劣势。
-
安装ZendOpcache扩展
现在已经可以使用 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 —— 如果你用了这个加速模块的话。-
PHP 5.5.0 及后续版本
在PHP5.5开始,ZendOpcache已经随着PHP的源代码一起发布了。
OPcache 只能编译为共享扩展。如果你使用 –disable-all 参数 禁用了默认扩展的构建, 那么必须使用 –enable-opcache 选项来开启 OPcache。
编译之后,就可以使用 zend_extension 指令来将 OPcache 扩展加载到 PHP 中。在非 Windows 平台使用 zend_extension=/full/path/to/opcache.so, Windows 平台使用 zend_extension=C:\path\to\php_opcache.dll。 -
PHP 5.2, 5.3 和 5.4 版本
PECL 扩展未与 PHP 捆绑,需要单独安装扩展。
ZendOpcache扩展主页:https://pecl.php.net/package/ZendOpcache
Zend Opcache 的源代码托管在 github 上,目前还是叫做ZendOptimizerPlus。#1.下载解压扩展包 wget wget http://pecl.php.net/get/zendopcache-7.0.4.tgz; tar -zxvf zendopcache-7.0.4.tgz; cd zendopcache-7.0.4/; #2.执行phpize /usr/local/php/bin/phpize; #3.编译安装 ./configure --with-php-config=/usr/local/php/bin/php-config; make && make install; #命令汇总:wget wget http://pecl.php.net/get/zendopcache-7.0.4.tgz;tar -zxvf zendopcache-7.0.4.tgz;cd zendopcache-7.0.4/;/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-20100525/
-
官方推荐的 php.ini 设置
#模块信息加入php.ini [opcache] ;zend_extension路径为opcache.so的路径 zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/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
-
重启phpfpm,查看是否正确加载OPcache
This program makes use of the Zend Scripting Language Engine: Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.4, Copyright (c) 1999-2014, by Zend Technologies
如果出现:Zend OPcache v7.0.4,那说明没问题了。
-
-
OPcache管理面板
github上开源OPcache管理面板源码
如果无法翻墙,可以下载本人复制包ocp.zip下载