前提是开启opcache,配置好它。
jit默认没有开启,并且配置文件里没有相关配置项目,需要手动添加,主要添加以下两个配置:
opcache.jit
string|int
针对经典用法,此选项接受以下四个字符串值之一:
disable
:完全禁用,无法在运行时启用。off
:禁用,但可以在运行时启用。tracing
/on
:使用追踪 JIT。默认启用并推荐给大部分用户。function
:使用函数 JIT。
针对高级用法,此选项接受 4 位整数 CRTO
,其中的位分别是:C
(特定 CPU 优化 flag)
0
:禁用特定 CPU 优化。1
:如果 CPU 支持则启用 AVX。
R
(寄存器分配)
0
:不执行寄存器分配。1
:执行局部域寄存器分配。2
:执行全局寄存器分配。
T
(触发)
0
: 在脚本加载时编译所有函数。1
: 在第一次执行时编译函数。2
:第一次请求时分析函数,然后编译最热门函数。3
:动态分析和编译热门函数。4
:目前未使用。5
:使用追踪 JIT。动态分析和为热门代码段编译追踪。
O
(优化级别)
0
:不 JIT。1
:最小 JIT(调用标准 VM 处理程序)。2
:内联 VM 处理程序。3
:使用类型推断。4
:使用调用图。5
:优化整个脚本。
"tracing"
模式对应 CRTO = 1254
,"function"
模式对应 CRTO = 1205
。opcache.jit_buffer_size
int
为编译 JIT 代码保留的共享内存量。值 0 表示禁用 JIT。当使用 int 时, 其值以字节来衡量。
通过php -i,查看是否开启,差不多以下配置:
opcache.jit => 1255 => 1255
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 128M => 128M
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_prof_threshold => 0.005 => 0.005