php为脚本语言,开启jit(预编译)能有效的提高性能,8.0以上版本优化的比较好,推荐使用
以下操作仅限于linux
php8编译安装,参考我的这篇:
链接: php8编译安装
1.开启opcache扩展,并配置
编辑php.ini(通过php --ini找到位置)
vi /usr/local/php/lib/php.ini
找到并取消opcache扩展注释(前面的;)
zend_extension=opcache.so
下面是参数配置:
链接: php官方参考
我个人的配置,仅供参考
;开启opcache
opcache.enable=1
;cli模式的开启,如果用php-cli,则用1 ,否则为0
opcache.enable_cli=1
;jit调用模式,参考下面的参数说明
opcache.jit=1205
;为编译 JIT 代码保留的共享内存量。值 0 表示禁用 JIT。
opcache.jit_buffer_size=64M
;共享内存大小,单位:兆字节
opcache.memory_consumption=128
;用来存储预留字符串的内存大小,单位:兆字节
opcache.interned_strings_buffer=8
;哈希表中可存储的脚本文件数量上限
opcache.max_accelerated_files=4000
;检查是否有更新的周期,单位:秒。 设置 0为 每次更新都检查更新。
opcache.revalidate_freq=60
;如果启用(值为1),一次释放全部请求变量的内存,而不是依次释放每一个已分配的内存块
opcache.fast_shutdown=1
2.重启php-fpm并查看
systemctl restart php-fpm
查看拓展
php -m
可以看到如下拓展,说明开启成功
Zend OPcache
3.参数说明
参考官方的文档,有详细的说明
链接: 官方文档
opcache.jit= CRTO,其中的位分别是:
-
第一位数字,是否使用avx指令,现在的cpu都支持
- 0-禁用特定 CPU 优化
- 1-如果 CPU 支持则启用 AVX
如果不确定,可以通过下面的命令查看
cat /proc/cpuinfo
-
第二位数字,寄存器分配策略
- 0-不执行寄存器分配
- 1-执行局部域寄存器分配
- 2-执行全局寄存器分配 第三位数字,触发策略
- 0-在php脚本加载时编译所有函数
- 1-php文件第一次执行时预编译
- 2-第一次请求时分析函数,然后编译最热门函数
- 3-动态分析和编译热门函数
- 4-目前未使用
- 5-使用追踪 JIT。动态分析和为热门代码段编译追踪。 第四位数字,优化策略
- 0 不 JIT
- 1 最小 JIT(调用标准 VM 处理程序)
- 2 内联 VM 处理程序
- 3 使用类型推断
- 4 使用调用图
- 5 优化整个脚本