-
opcache.enable
bool
-
启用操作码缓存。禁用后,代码不会被优化或缓存。设置 opcache.enable
无法通过 ini_set() 在运行时启用,只能禁用。尝试在脚本中启用它将生成警告。
-
opcache.enable_cli
bool
-
启用 CLI 版本的 PHP 的操作码缓存。
-
opcache.memory_consumption
int
-
OPcache 使用的共享内存存储的大小,以兆字节为单位。最小允许值为 "8"
,如果设置了更小的值,则会强制执行此值。
-
opcache.interned_strings_buffer
int
-
用于存储内部字符串的内存量,以兆字节为单位。
-
opcache.max_accelerated_files
int
-
OPcache 哈希表中的键(因此是脚本)的最大数量。实际使用 的值为大于或等于配置值的素数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
中的第一个数字。最小值为 200。最大值为 1000000。超出此范围的值将被限制在允许的范围内。
-
opcache.max_wasted_percentage
int
-
在调度重启之前允许的浪费内存的最大百分比,如果可用内存不足。最大允许值为 "50"
,如果设置了更大的值,则会强制执行此值。
-
opcache.use_cwd
bool
-
如果启用,OPcache 会将当前工作目录附加到脚本键,从而消除具有相同基本名称的文件之间可能发生的冲突。禁用此指令可以提高性能,但可能会破坏现有的应用程序。
-
opcache.validate_timestamps
bool
-
如果启用,OPcache 将每 opcache.revalidate_freq 秒检查一次更新后的脚本。当此指令被禁用时,你必须通过 opcache_reset()、opcache_invalidate() 或重新启动 Web 服务器来手动重置 OPcache,以便文件系统更改生效。
注意: 如果 opcache.file_update_protection 或 opcache.max_file_size 选项设置为非零值,OPcache 仍可能在编译时验证文件的 时间戳。
-
opcache.revalidate_freq
int
-
检查脚本时间戳以获取更新的频率,以秒为单位。 0
将导致 OPcache 在每个请求上检查更新。
如果 opcache.validate_timestamps 被禁用,则忽略此配置指令。
-
opcache.revalidate_path
bool
-
如果禁用,将重新使用使用相同 include_path 的现有缓存文件。因此,如果包含路径中其他位置存在同名文件,则不会找到它。
-
如果禁用,所有文档注释将从操作码缓存中丢弃,以减小优化代码的大小。禁用此配置指令可能会破坏依赖于注释解析来进行注释的应用程序和框架,包括 Doctrine、Zend Framework 2 和 PHPUnit。
-
opcache.fast_shutdown
bool
-
如果启用,将使用快速关闭序列,该序列不会释放每个已分配的块,而是依赖于 Zend 引擎内存管理器来批量释放整个请求变量集。
此指令已在 PHP 7.2.0 中移除。快速关闭序列的变体已集成到 PHP 中,如果可能,将自动使用。
-
opcache.enable_file_override
bool
-
启用后,在调用 file_exists()、is_file() 和 is_readable() 时,操作码缓存将检查文件是否已被缓存。这可能会提高检查 PHP 脚本是否存在和可读性的应用程序的性能,但如果 opcache.validate_timestamps 被禁用,则可能会返回陈旧的数据。
-
opcache.optimization_level
int
-
一个位掩码,用于控制执行哪些优化过程。默认情况下,将应用所有安全优化。更改默认值主要用于调试/开发优化器(另请参见 opcache.opt_debug_level)。
-
opcache.inherited_hack
bool
-
此配置指令将被忽略。
-
opcache.dups_fix
bool
-
此技巧只应在解决 "无法重新声明类" 错误时启用。
-
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
-
生成用于调试不同优化阶段的 opcode 转储。0x10000 将输出编译器在任何优化发生之前生成的 opcode,而 0x20000 将输出优化后的代码。
-
opcache.file_cache
string
-
启用并设置二级缓存目录。当 SHM 内存已满、服务器重启或 SHM 重置时,它应该提高性能。默认的 ""
禁用基于文件的缓存。
-
opcache.file_cache_only
bool
-
启用或禁用在共享内存中的 opcode 缓存。
注意:
在 PHP 8.1.0 之前,在已经填充的文件缓存的情况下禁用此指令需要手动清除文件缓存。
-
opcache.file_cache_consistency_checks
bool
-
启用或禁用从文件缓存加载脚本时的校验和验证。
-
opcache.file_cache_fallback
bool
-
为无法重新附加到共享内存的特定进程隐含 opcache.file_cache_only=1
(仅限 Windows)。需要显式启用文件缓存。
警告
禁用此配置选项可能会阻止进程启动,因此不建议这样做。
-
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
: 启用 AVX 的使用,如果 CPU 支持它。
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
-
尝试内联多态(动态或方法)调用的最大次数。超过此限制的调用将被视为巨态调用,不会被内联。