什么是 OPCache

当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,OPCode)。OPCode Cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。

启用 OPCache

默认情况下 PHP 会安装 OPCache,但是不会启用,我们可以通过在 php.ini 中添加如下代码,开启 OPCache
【但是宝塔面板下安装的PHP可能默认不安装,请在扩展中手动安装】

代码

; 开关打开
opcache.enable=1
; 可用内存酌情而定,单位 megabytes【默认64】
opcache.memory_consumption=512
; 对多缓存文件限制,命中率不到 100% 的话,可以试着提高这个值
opcache.max_accelerated_files=5000
; Opcache 会在一定时间内去检查文件的修改时间,这里设置检查的时间周期,默认为 2,定位为秒
opcache.revalidate_freq=300
; 设置缓存的过期时间
opcache.revalidate_freq=3600
; 控制内存中最多可以缓存多少个PHP文件【默认2000,最大10W】
opcache.max_accelerated_files=3000
; 是否快速关闭,打开后在 PHP Request Shutdown 的时候回收内存的速度会提高。
opcache.fast_shutdown=1
; Opcache中触发重启所需的空间浪费百分比(默认值为5)
opcache.max_wasted_percentage=5
; 不保存文件/函数的注释
opcache.save_comments=0

DEMO

 

参考资料

https://tideways.com/profiler/blog/fine-tune-your-opcache-configuration-to-avoid-caching-suprises
https://www.easywpbook.com/optimize-2.html