Zend Opcache 加速 PHP

PS:Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具。现在,Zend 科技公司将 Optimizer+ 在 php License 下开源成为 Zend Opcache。
Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。

  1. 什么是 opcode 缓存?

    当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事 —— 本着环保的态度,也应该尽量减少消耗不是?
    现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。

  2. Optimizer+ 与 APC 的优缺点对比

    Optimizer+ 于 2013年3月中旬改名为 Opcache。
    很多人都在问 PHP 加速缓存哪个好,毫无疑问 Zend Opcache 是首选。为什么?因为,这是官方出品的,在PHP5.5开始,已经随着PHP的源代码一起发布了。作为 APC 的竞争对手,新生的 Zend Opcache 很有可能取代 APC 的位置,虽然 OptimizerPlus 没有象 APC 那样的 user cache 功能。

    OPTIMIZER+ 相对 APC 的优点

    1. 性能。根据测试,Zend Optimizer+ 始终优于 APC。随代码差异,每秒钟处理的请求数高 5~20%。Google doc 上记录的测试结果中,WordPress 2.1.1(不知道为什么不用个新版本的 WP 来测试),性能提高约 8%。理论上来说,对于 WP 3.5.1,性能应该也能得到大约 5~10% 的提升吧。对于运行 WordPress 的服务器而言,使用 Optimizer+ 可以显著降低 CPU 使用率和提高页面加载速度(graphics here)。
    2. 支持新的 PHP 版本。Zend 和 PHP 社区都会帮助 Optimizer+ 能够支持最新版本的 PHP。
    3. 可靠性。Optimizer+ 拥有可选的损坏检测能力,可以防止因数据损坏而导致的服务器崩溃。
    4. 更好的兼容性。PHP 社区打算让 Optimizer+ 与社区支持的所有 PHP 版本相兼容。

    APC 相对 OPTIMIZER+ 的优势

    1. APC 有数据缓存 API,而 Optimizer+ 没有。
    2. APC 能够回收旧的无效的脚本占用的内存。APC 有内存管理器,可以将那些不再使用的脚本关联的内存进行回收。而 Optimizer+ 不同,它将这样的内存标记为“脏的”,但并不会回收它们。一旦“脏的”内存占用配置阈值的百分比达到一定值,Optimizer+ 就将自己重新启动。这种行为在稳定性上既有优势也有劣势。
  3. 安装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 —— 如果你用了这个加速模块的话。

    1. 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。

    2. 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/
                      
    3. 官方推荐的 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
                      

      官方推荐的 php.ini 设置
      OPcache完整配置指令中文解释

    4. 重启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,那说明没问题了。

  4. OPcache管理面板

    github上开源OPcache管理面板源码

    如果无法翻墙,可以下载本人复制包ocp.zip下载

相关文章
  1. php-redis扩展
  2. Gearman-PHP扩展源码编译
  3. php安装memcached扩展
  4. php下添加pdo_mysql扩展
  5. fastDFS-php 扩展 所对应的 fdfs类
  6. fastDFS-php 扩展安装
本站版权
1、本站所有主题由该文章作者发表,该文章作者与尘埃享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和尘埃的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:
二维码
Posted in extension-php, lnmp源码安装, php, php扩展, 编程语言
Comments are closed.