一、什么是opcodecache当一个PHP文件被解释执行时,首先会被编译成中间代码,称为opcode(CPU专用的机器语言指令),然后由底层虚拟机执行机器。如果PHP文件没有被修改,操作码总是相同的。这意味着编译步骤白白浪费了CPU资源。这是操作码缓存派上用场的地方。通过在内存中缓存操作码,它可以防止冗余编译步骤,并在下次调用执行时重复使用。一般的执行过程是先检查文件的签名(signature)或修改时间,以防文件被更改。Opcode缓存的目的是避免重复编译,减少CPU和内存开销。操作码缓存通常可以大大提高应用程序的执行速度。PHP5.5之后的所有版本都有一个名为ZendOPcache的内置操作码缓存工具。根据你使用的PHP安装包/发行版,一般默认是开启的。请查看opcache.enablephpinfo()和phpinfo()输出的信息,确认是否启用。早期版本也可以通过PECL扩展安装。2.有哪些操作码缓存插件?Optimizer+(Optimizer+在2013年3月中旬更名为Opcache,PHP5.5整合了Opcache,其他的会消失吗?),eAccelerator,xcache,APC...3.为什么要使用opcodecache?主要目的是减少重复编译,从而减少CPU和内存开销。参考链接:https://www.cnblogs.com/JohnA...4.opcache插件安装请参考:https://blog.jjonline.cn/linu...5.关键opcode缓存为主要是减少CPU内存的开销,下次面试的性能提升点,记得说opcache~使用opcache有个缺点,就是更新php代码后,可能不会马上生效,因为opcache有一个有效的时间设置,只有在过期后才会重新生成opcode,否则会使用原来缓存的opcode。这里提供三个思路来解决这个问题:(1)根据实际业务情况,合理设置opcache的过期时间,即opcache.revalidate_freq的值(2)自己写一个php脚本,调用opcache_reset()函数重置所有opcache缓存字节码,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的缓存字节码。(3)最简单粗暴的方法是直接重启php-fpm(nginxfast-cgi模式)或者apache(apache-handler模??式),立即生效。
