-
opcache.enable
布尔型
-
启用操作码缓存。禁用时,代码不会被优化或缓存。opcache.enable
设置无法通过ini_set()在运行时启用,只能禁用。尝试在脚本中启用它会生成警告。
-
opcache.enable_cli
布尔型
-
为PHP的CLI版本启用操作码缓存。
-
opcache.memory_consumption
整型
-
OPcache使用的共享内存存储大小(以兆字节为单位)。最小允许值为"8"
,如果设置较小的值,则强制执行该值。
-
opcache.interned_strings_buffer
整型
-
用于存储内部字符串的内存量(以兆字节为单位)。在64位架构上最大值为32767,在32位架构上最大值为4095。
注意:在PHP 8.4.0之前,所有架构上的最大值均为4095兆字节。
-
opcache.max_accelerated_files
整型
-
OPcache哈希表中的键(以及脚本)的最大数量。实际使用的值将是素数集合{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
中第一个大于或等于配置值的数字。最小值为200。最大值为1000000。此范围之外的值将被限制在允许的范围内。
-
opcache.max_wasted_percentage
整型
-
如果可用空闲内存不足,则在计划重新启动之前允许的浪费内存的最大百分比。最大允许值为"50"
,如果设置更大的值,则强制执行该值。
-
opcache.use_cwd
布尔型
-
如果启用,OPcache会将当前工作目录附加到脚本键,从而消除具有相同基名称的文件之间可能发生的冲突。禁用此指令可以提高性能,但可能会破坏现有应用程序。
-
opcache.validate_timestamps
布尔型
-
如果启用,OPcache将每opcache.revalidate_freq秒检查一次更新的脚本。禁用此指令后,必须通过opcache_reset()、opcache_invalidate()或重新启动Web服务器来手动重置OPcache,以便文件系统的更改生效。
注意:如果opcache.file_update_protection或opcache.max_file_size选项设置为非零值,OPcache仍然可能会在编译时验证文件的timestamp。
-
opcache.revalidate_freq
整型
-
检查脚本时间戳以进行更新的频率(以秒为单位)。0
表示OPcache将在每次请求时检查更新。
如果禁用了opcache.validate_timestamps,则忽略此配置指令。
-
opcache.revalidate_path
布尔型
-
如果禁用,则将重用使用相同include_path的现有缓存文件。因此,如果include_path中的其他位置存在同名文件,则找不到该文件。
-
如果禁用,所有文档注释都将从操作码缓存中丢弃,以减小优化代码的大小。禁用此配置指令可能会破坏依赖于注释解析来进行注释的应用程序和框架,包括Doctrine、Zend Framework 2和PHPUnit。
-
opcache.fast_shutdown
布尔型
-
如果启用,将使用快速关闭序列,该序列不会释放每个已分配的块,而是依赖于Zend Engine内存管理器来批量释放请求变量的整个集合。
此指令已在PHP 7.2.0中移除。快速关闭序列的一个变体已集成到PHP中,如果可能,将自动使用。
-
opcache.enable_file_override
布尔型
-
启用后,当调用file_exists()、is_file()和is_readable()时,将检查操作码缓存以查看文件是否已被缓存。这可能会提高检查PHP脚本的存在性和可读性的应用程序的性能,但如果禁用了opcache.validate_timestamps,则可能会返回过时的数据。
-
opcache.optimization_level
整型
-
一个位掩码,用于控制执行哪些优化传递。默认情况下会应用所有安全的优化。更改默认值主要用于调试/开发优化器(另请参见 opcache.opt_debug_level)。
-
opcache.inherited_hack
bool
-
此配置指令被忽略。
-
opcache.dups_fix
bool
-
此 hack 仅应在解决“无法重新声明类”错误时启用。
-
opcache.blacklist_filename
string
-
OPcache 黑名单文件的路径。黑名单文件是一个文本文件,其中包含不应加速的文件名称,每行一个。允许使用通配符,也可以提供前缀。以分号开头的行将被忽略作为注释。
一个简单的黑名单文件可能如下所示
-
opcache.max_file_size
int
-
将被缓存的最大文件大小(以字节为单位)。如果此值为 0
,则将缓存所有文件。
-
opcache.consistency_checks
int
-
如果非零,OPcache 将每 N 个请求验证一次缓存校验和,其中 N 是此配置指令的值。这仅应在调试时启用,因为它会影响性能。
注意:
从8.1.18和8.2.5开始禁用。从PHP 8.3.0开始移除。
-
opcache.force_restart_timeout
int
-
如果缓存未激活,则等待计划重启开始的时间长度(以秒为单位)。如果达到超时时间,则 OPcache 假设出现问题,并将终止持有缓存锁的进程以允许重启。
如果 opcache.log_verbosity_level 设置为 2 或更高,则发生此情况时会在错误日志中记录警告。
此指令在 Windows 上不受支持。
-
opcache.error_log
string
-
OPcache 错误的错误日志。空字符串与 stderr
的处理方式相同,并将导致日志发送到标准错误(在大多数情况下将是 Web 服务器错误日志)。
-
opcache.log_verbosity_level
int
-
日志详细程度级别。默认情况下,仅记录致命错误(级别 0)和错误(级别 1)。其他可用级别包括警告(级别 2)、信息消息(级别 3)和调试消息(级别 4)。
-
opcache.record_warnings
bool
-
如果启用,OPcache 将记录编译时警告并在下次包含时重放它们,即使它是从缓存中提供的。
-
opcache.preferred_memory_model
string
-
OPcache 要使用的首选内存模型。如果留空,OPcache 将选择最合适的模型,这在几乎所有情况下都是正确的行为。
可能的值包括 mmap
、shm
、posix
和 win32
。
-
opcache.protect_memory
bool
-
在执行脚本时保护共享内存免受意外写入。这仅用于内部调试。
-
opcache.mmap_base
string
-
在 Windows 上用于共享内存段的基地址。所有 PHP 进程都必须将共享内存映射到相同的地址空间。使用此指令可以修复“无法重新附加到基地址”错误。
-
opcache.restrict_api
string
-
仅允许从路径以指定字符串开头的 PHP 脚本调用 OPcache API 函数。默认值 ""
表示无限制。
-
opcache.file_update_protection
string
-
防止缓存年龄小于此秒数的文件。它可以防止缓存不完整更新的文件。如果所有文件更新都是原子的,则可以通过将其设置为 0
来提高性能。这将允许立即缓存文件。
-
opcache.huge_code_pages
bool
-
启用或禁用将 PHP 代码(文本段)复制到 HUGE PAGES。这应该会提高性能,但需要相应的操作系统配置。从 PHP 7.0.0 开始在 Linux 上可用,从 PHP 7.4.0 开始在 FreeBSD 上可用。
-
opcache.lockfile_path
string
-
用于存储共享锁文件的绝对路径(仅限 *nix)。
-
opcache.opt_debug_level
string
-
生成操作码转储以调试优化的不同阶段。0x10000 将在任何优化发生之前输出编译器生成的 opcode,而 0x20000 将输出优化的代码。
-
opcache.file_cache
string
-
启用并设置二级缓存目录。当 SHM 内存已满、服务器重启或 SHM 重置时,它应该会提高性能。默认值 ""
禁用基于文件的缓存。
-
opcache.file_cache_only
bool
-
启用或禁用共享内存中的操作码缓存。
注意:
在 PHP 8.1.0 之前,使用已填充的文件缓存禁用此指令需要手动清除文件缓存。
-
opcache.file_cache_consistency_checks
bool
-
启用或禁用从文件缓存加载脚本时的校验和验证。
-
opcache.file_cache_fallback
bool
-
对于无法重新附加到共享内存的特定进程(仅限 Windows),表示 opcache.file_cache_only=1
。需要显式启用文件缓存。
警告
禁用此配置选项可能会阻止进程启动,因此不建议这样做。
-
opcache.validate_permission
bool
-
根据当前用户验证缓存文件的权限。
-
opcache.validate_root
bool
-
防止在 chroot 环境中发生名称冲突。这应该在所有 chroot 环境中启用,以防止访问 chroot 外面的文件。
-
opcache.preload
string
-
指定一个将在服务器启动时编译和执行的 PHP 脚本,该脚本可以通过 include 或使用 opcache_compile_file() 函数预加载其他文件。在这些文件中定义的所有实体(例如函数和类)都将开箱即用地提供给请求,直到服务器关闭。
注意:
Windows 上不支持预加载。
-
opcache.preload_user
string
-
允许以指定的系统用户身份运行预加载。这对于在切换到非特权系统用户之前以 root 身份启动的服务器很有用。出于安全原因,默认情况下不允许以 root 身份进行预加载,除非此指令显式设置为 root
。
-
opcache.cache_id
string
-
在 Windows 上,所有在同一用户帐户下运行相同 PHP SAPI 且具有相同缓存 ID 的进程共享一个 OPcache 实例。缓存 ID 的值可以自由选择。
提示
对于 IIS,不同的应用程序池可以通过使用环境变量 APP_POOL_ID 作为 opcache.cache_id
来拥有自己的 OPcache 实例。
-
opcache.jit
string|int
-
对于典型用法,此选项接受四个字符串值之一
disable
:完全禁用,运行时无法启用。
off
:禁用,但可以在运行时启用。
-
tracing
/on
:使用追踪 JIT。默认启用,推荐大多数用户使用。
function
:使用函数 JIT。
对于高级用法,此选项接受一个 4 位整数 CRTO
,其中数字表示
C
(特定于 CPU 的优化标志)
-
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 代码保留的共享内存量。零值禁用 JIT。
使用int 类型时,数值以字节为单位。如本常见问题解答中所述,也可以使用简写表示法。
-
opcache.jit_debug
int
-
指定要启用的 JIT 调试输出的位掩码。有关可能的取值,请参阅 » zend_jit.h(搜索以ZEND_JIT_DEBUG
开头的宏定义)。
-
opcache.jit_bisect_limit
int
-
调试选项,用于在编译一定数量的函数后禁用 JIT 编译。这有助于区分 JIT 误编译的来源。注意:此选项仅在 JIT 触发器设置为 0(脚本加载时编译)或 1(首次执行时编译)时有效,例如 opcache.jit=1215
。更多信息请参见 opcache.jit 选项。
-
opcache.jit_prof_threshold
float
-
使用“首次请求时分析”触发模式时,此阈值决定函数是否被认为是热点函数。函数调用次数除以所有函数的总调用次数必须高于此阈值。例如,阈值为 0.005 表示构成所有调用 0.5% 以上的函数将进行 JIT 编译。
-
opcache.jit_max_root_traces
int
-
最大根轨迹数。根轨迹是首先通过代码的一条执行路径,它是 JIT 编译的单元。如果达到此限制,JIT 将不会编译新代码。
-
opcache.jit_max_side_traces
int
-
一个根轨迹可以拥有的最大侧轨迹数。侧轨迹是另一条不遵循已编译根轨迹路径的执行路径。如果达到此限制,属于同一根轨迹的侧轨迹将不会被编译。
-
opcache.jit_max_exit_counters
int
-
最大侧轨迹退出计数器数。这限制了所有根轨迹中可能存在的侧轨迹总数。
-
opcache.jit_hot_loop
int
-
循环迭代多少次后被视为热点循环。有效值范围为 [0,255]
;对于此范围之外的任何设置,例如 -1
或 256
,将使用默认值。0
将禁用 JIT 追踪和编译任何循环。
-
opcache.jit_hot_func
int
-
函数调用多少次后被视为热点函数。有效值范围为 [0,255]
;对于此范围之外的任何设置,例如 -1
或 256
,将使用默认值。0
将禁用 JIT 追踪和编译任何函数。
-
opcache.jit_hot_return
int
-
返回多少次后被视为热点返回。有效值范围为 [0,255]
;对于此范围之外的任何设置,例如 -1
或 256
,将使用默认值。0
将禁用 JIT 追踪和编译任何返回。
-
opcache.jit_hot_side_exit
int
-
侧退出多少次后被视为热点侧退出。有效值范围为 [0,255]
;对于此范围之外的任何设置,例如 -1
或 256
,将使用默认值。0
将禁用 JIT 追踪和编译任何侧退出。
-
opcache.jit_blacklist_root_trace
int
-
在将根轨迹列入黑名单之前,尝试编译根轨迹的最大次数。
-
opcache.jit_blacklist_side_trace
int
-
在将侧轨迹列入黑名单之前,尝试编译侧轨迹的最大次数。
-
opcache.jit_max_loop_unrolls
int
-
尝试在侧轨迹中展开循环的最大次数,试图到达根轨迹并关闭外循环。
-
opcache.jit_max_recursive_calls
int
-
展开的递归调用循环的最大数量。
-
opcache.jit_max_recursive_returns
int
-
展开的递归返回循环的最大数量。
-
opcache.jit_max_polymorphic_calls
int
-
尝试内联多态(动态或方法)调用的最大次数。超过此限制的调用将被视为巨型多态调用,不会内联。