php中opcode缓存

1、什么是opcode缓存

  1. 当一个 PHP 文件被解释执行的时候,首先是被编译成名为 opcode (CPU 专用的机器语言指令)的中间代码,而后才被底层的虚拟机执行。 若是PHP文件没有被修改过,opcode 始终是同样的。这就意味着编译步骤白白浪费了 CPU 的资源。
  2. 此时 opcode 缓存就派上用场了。经过将 opcode 缓存在内存中,它能防止冗余的编译步骤,而且在下次调用执行时获得重用。通常执行过程是先检查文件的签名(signature)或者修改时间,以防文件有改动。
  3. Opcode cache的目地是避免重复编译,减小CPU和内存开销。
  4. opcode 缓存一般都可以大幅度地提高应用程序的执行速度。PHP 5.5 之后的全部版本都内置了一个 opcode 缓存工具,叫作 Zend OPcache。 根据你所使用的 PHP 安装包/发行版的不一样,通常状况下是默认开启的,请查看 opcache.enable phpinfo() 和 phpinfo() 输出的信息确认是否已经开启。早期的版本也能经过 PECL 扩展来安装。

2、有哪些opcode缓存插件?

  1. Optimizer+(Optimizer+于2013年3月中旬更名为Opcache,PHP 5.5集成Opcache,其余的会不会消失?)、eAccelerator、xcache、APC …

3、为何使用opcode缓存?

  1. 主要是为了减小重复编译,从而减小CPU和内存的开销。
  2. 参考连接:https://www.cnblogs.com/JohnA...

4、opcache插件安装

  1. 请参考:https://blog.jjonline.cn/linu...

5、划重点

  1. opcode缓存主要是为了减少CPU内存的开销,下次面试的时候关于性能提高的点,记得说opcache~
  2. 使用opcache有一个缺点,就是更新了php代码后可能不会立刻生效,由于opcache有个有效时间的设置,只有过时后才会从新生成opcode不然还会沿用原来的缓存的opcode,这里,提供三种思路解决这种问题:php

    (1)根据业务实际状况,合理设置opcache的过时时间,也就是opcache.revalidate_freq值
    (2)本身写一个php脚本,调用opcache_reset()函数重置全部opcache缓存字节码,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的缓存字节码。
    (3)最简单粗暴的方法,可当即生效的方式,就是直接重启php-fpm(nginx fast-cgi模式)或apache(apache-handler模式)。
相关文章
相关标签/搜索