zoukankan      html  css  js  c++  java
  • PHP扩展--opcache安装及配置

    简介

    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 wiki 上的讨论,Zend Opcache 即将整合到 php 5.5 中。作为 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+ 没有。

    APC 能够回收旧的无效的脚本占用的内存。APC 有内存管理器,可以将那些不再使用的脚本关联的内存进行回收。而 Optimizer+ 不同,它将这样的内存标记为“脏的”,但并不会回收它们。一旦“脏的”内存占用配置阈值的百分比达到一定值,Optimizer+ 就将自己重新启动。这种行为在稳定性上既有优势也有劣势

    opcache安装

    wget http://pecl.php.net/get/zendopcache-7.0.3.tgz
    tar zxvf zendopcache-7.0.3.tgz
    cd zendopcache-7.0.3
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install

    配置php.ini

    [Zend Opcache]
    zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
    opcache.enable=1 ;启用操作码缓存
    opcache.enable_cli=1 ;仅针对CLI环境启用操作码缓存
    opcache.memory_consumption=128 ;共享内存大小,单位MB
    opcache.interned_strings_buffer=8 ;存储临时字符串的内存大小,单位MB
    opcache.max_accelerated_files=4000 ;哈希表中可存储的脚本文件数量上限
    ;opcache.max_wasted_percentage=5 ;浪费内存的上限,以百分比计
    ;opcache.use_cwd=1;附加改脚本的工作目录,避免同名脚本冲突
    opcache.validate_timestamps=1 ;每隔revalidate_freq 设定的秒数 检查脚本是否更新
    opcache.revalidate_freq=60 ;
    ;opcache.revalidate_path=0 ;如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用
    ;opcache.save_comments=1 ;禁用后将也不会加载注释内容
    opcache.fast_shutdown=1 ;一次释放全部请求变量的内存
    opcache.enable_file_override=0 ; 如果启用,则在调用函数file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存
    ;opcache.optimization_level=0xffffffff ;控制优化级别的二进制位掩码。
    ;opcache.inherited_hack=1 ;PHP 5.3之前做的优化
    ;opcache.dups_fix=0 ;仅作为针对 “不可重定义类”错误的一种解决方案。
    ;opcache.blacklist_filename="" ;黑名单文件为文本文件,包含了不进行预编译优化的文件名
    ;opcache.max_file_size=0 ;以字节为单位的缓存的文件大小上限
    ;opcache.consistency_checks=0 ;如果是非 0 值,OPcache 将会每隔 N 次请求检查缓存校验和
    opcache.force_restart_timeout=180 ; 如果缓存处于非激活状态,等待多少秒之后计划重启。
    ;opcache.error_log="" ;OPcache模块的错误日志文件
    ;opcache.log_verbosity_level=1 ;OPcache模块的日志级别。致命(0)错误(1) 警告(2)信息(3)调试(4)
    ;opcache.preferred_memory_model="" ;OPcache 首选的内存模块。可选值包括: mmap,shm, posix 以及 win32。
    ;opcache.protect_memory=0 ;保护共享内存,以避免执行脚本时发生非预期的写入。 仅用于内部调试。
    ;opcache.mmap_base=null ;在Windows 平台上共享内存段的基地址

    如果你使用windows开发开启 注意文件 其他类似

    zend_extension =D:/WNMP/php/ext/php_opcache.dll

    运行结果

    转载总结

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/attitudeY/p/6812899.html
Copyright © 2011-2022 走看看