這些函數(shù)的行為受 php.ini 中的設(shè)置影響。
名字 | 默認(rèn) | 可修改范圍 | 更新日志 |
---|---|---|---|
opcache.enable | "1" | PHP_INI_ALL | |
opcache.enable_cli | "0" | PHP_INI_SYSTEM | 在 PHP 7.1.2 至 7.1.6 (含)的版本,默認(rèn)值是"1" |
opcache.memory_consumption | "128" | PHP_INI_SYSTEM | 在 PHP 7.0.0 之前,默認(rèn)值是 "64" |
opcache.interned_strings_buffer | "8" | PHP_INI_SYSTEM | 在 PHP 7.0.0 之前,默認(rèn)值是 "4" |
opcache.max_accelerated_files | "10000" | PHP_INI_SYSTEM | 在 PHP 7.0.0 之前,默認(rèn)值是 "2000" |
opcache.max_wasted_percentage | "5" | PHP_INI_SYSTEM | |
opcache.use_cwd | "1" | PHP_INI_SYSTEM | |
opcache.validate_timestamps | "1" | PHP_INI_ALL | |
opcache.revalidate_freq | "2" | PHP_INI_ALL | |
opcache.revalidate_path | "0" | PHP_INI_ALL | |
opcache.save_comments | "1" | PHP_INI_SYSTEM | |
opcache.load_comments | "1" | PHP_INI_ALL | 從 PHP 7.0.0 開(kāi)始被移除 |
opcache.fast_shutdown | "0" | PHP_INI_SYSTEM | 從 PHP 7.2.0 開(kāi)始被移除 |
opcache.enable_file_override | "0" | PHP_INI_SYSTEM | |
opcache.optimization_level | "0x7FFFBFFF" | PHP_INI_SYSTEM | 從 PHP 5.6.18 開(kāi)始,默認(rèn)值從 0xFFFFFFFF 修改為 0x7FFFBFFF |
opcache.inherited_hack | "1" | PHP_INI_SYSTEM | 自 PHP 7.3.0 被移除 |
opcache.dups_fix | "0" | PHP_INI_ALL | |
opcache.blacklist_filename | "" | PHP_INI_SYSTEM | |
opcache.max_file_size | "0" | PHP_INI_SYSTEM | |
opcache.consistency_checks | "0" | PHP_INI_ALL | |
opcache.force_restart_timeout | "180" | PHP_INI_SYSTEM | |
opcache.error_log | "" | PHP_INI_SYSTEM | |
opcache.log_verbosity_level | "1" | PHP_INI_SYSTEM | |
opcache.preferred_memory_model | "" | PHP_INI_SYSTEM | |
opcache.protect_memory | "0" | PHP_INI_SYSTEM | |
opcache.mmap_base | null |
PHP_INI_SYSTEM | |
opcache.restrict_api | "" | PHP_INI_SYSTEM | |
opcache.file_update_protection | "2" | PHP_INI_ALL | |
opcache.huge_code_pages | "0" | PHP_INI_SYSTEM | |
opcache.lockfile_path | "/tmp" | PHP_INI_SYSTEM | |
opcache.opt_debug_level | "0" | PHP_INI_SYSTEM | |
opcache.file_cache | NULL | PHP_INI_SYSTEM | 從 PHP 7.0.0 開(kāi)始支持 |
opcache.file_cache_only | "0" | PHP_INI_SYSTEM | 從 PHP 7.0.0 開(kāi)始支持 |
opcache.file_cache_consistency_checks | "1" | PHP_INI_SYSTEM | 從 PHP 7.0.0 開(kāi)始支持 |
opcache.file_cache_fallback | "1" | PHP_INI_SYSTEM | 從 PHP 7.0.0 開(kāi)始支持,僅適用于 Windows 平臺(tái) |
opcache.validate_permission | "0" | PHP_INI_SYSTEM | 從 PHP 7.0.14 開(kāi)始支持 |
opcache.validate_root | "0" | PHP_INI_SYSTEM | 從 PHP 7.0.14 開(kāi)始支持 |
opcache.preload | "" | PHP_INI_SYSTEM | 從 PHP 7.4.0 開(kāi)始支持 |
opcache.preload_user | "" | PHP_INI_SYSTEM | 從 PHP 7.4.0 開(kāi)始支持 |
這是配置指令的簡(jiǎn)短說(shuō)明。
opcache.enable
boolean
啟用操作碼緩存。如果禁用此選項(xiàng),則不會(huì)優(yōu)化和緩存代碼。
在運(yùn)行期使用 ini_set() 函數(shù)只能禁用
opcache.enable
設(shè)置,不可以啟用此設(shè)置。
如果在腳本中嘗試啟用此設(shè)置項(xiàng)會(huì)產(chǎn)生警告。
opcache.enable_cli
boolean
僅針對(duì) CLI 版本的 PHP 啟用操作碼緩存。 通常被用來(lái)測(cè)試和調(diào)試。
opcache.memory_consumption
integer
OPcache 的共享內(nèi)存大小,以兆字節(jié)為單位。
opcache.interned_strings_buffer
integer
用來(lái)存儲(chǔ)預(yù)留字符串的內(nèi)存大小,以兆字節(jié)為單位。 PHP 5.3.0 之前的版本會(huì)忽略此配置指令。
opcache.max_accelerated_files
integer
OPcache 哈希表中可存儲(chǔ)的腳本文件數(shù)量上限。
真實(shí)的取值是在質(zhì)數(shù)集合
{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 }
中找到的第一個(gè)大于等于設(shè)置值的質(zhì)數(shù)。
設(shè)置值取值范圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
opcache.max_wasted_percentage
integer
浪費(fèi)內(nèi)存的上限,以百分比計(jì)。 如果達(dá)到此上限,那么 OPcache 將產(chǎn)生重新啟動(dòng)續(xù)發(fā)事件。
opcache.use_cwd
boolean
如果啟用,OPcache 將在哈希表的腳本鍵之后附加改腳本的工作目錄, 以避免同名腳本沖突的問(wèn)題。 禁用此選項(xiàng)可以提高性能,但是可能會(huì)導(dǎo)致應(yīng)用崩潰。
opcache.validate_timestamps
boolean
如果啟用,那么 OPcache 會(huì)每隔 opcache.revalidate_freq 設(shè)定的秒數(shù) 檢查腳本是否更新。 如果禁用此選項(xiàng),你必須使用 opcache_reset() 或者 opcache_invalidate() 函數(shù)來(lái)手動(dòng)重置 OPcache,也可以 通過(guò)重啟 Web 服務(wù)器來(lái)使文件系統(tǒng)更改生效。
opcache.revalidate_freq
integer
檢查腳本時(shí)間戳是否有更新的周期,以秒為單位。
設(shè)置為 0
會(huì)導(dǎo)致針對(duì)每個(gè)請(qǐng)求, OPcache 都會(huì)檢查腳本更新。
如果 opcache.validate_timestamps 配置指令設(shè)置為禁用,那么此設(shè)置項(xiàng)將會(huì)被忽略。
opcache.revalidate_path
boolean
如果禁用此選項(xiàng),在同一個(gè) include_path 已存在的緩存文件會(huì)被重用。 因此,將無(wú)法找到不在包含路徑下的同名文件。
opcache.save_comments
boolean
如果禁用,腳本文件中的注釋內(nèi)容將不會(huì)被包含到操作碼緩存文件, 這樣可以有效減小優(yōu)化后的文件體積。 禁用此配置指令可能會(huì)導(dǎo)致一些依賴注釋或注解的 應(yīng)用或框架無(wú)法正常工作, 比如: Doctrine, Zend Framework 2 以及 PHPUnit。
opcache.load_comments
boolean
如果禁用,則即使文件中包含注釋,也不會(huì)加載這些注釋內(nèi)容。 本選項(xiàng)可以和 opcache.save_comments 一起使用,以實(shí)現(xiàn)按需加載注釋內(nèi)容。
opcache.fast_shutdown
boolean
如果啟用,則會(huì)使用快速停止續(xù)發(fā)事件。 所謂快速停止續(xù)發(fā)事件是指依賴 Zend 引擎的內(nèi)存管理模塊 一次釋放全部請(qǐng)求變量的內(nèi)存,而不是依次釋放每一個(gè)已分配的內(nèi)存塊。
從 PHP 7.2.0 開(kāi)始,此配置指令被移除。 快速停止的續(xù)發(fā)事件的處理已經(jīng)集成到 PHP 中, 只要有可能,PHP 會(huì)自動(dòng)處理這些續(xù)發(fā)事件。
opcache.enable_file_override
boolean
如果啟用,則在調(diào)用函數(shù) file_exists(), is_file() 以及 is_readable() 的時(shí)候, 都會(huì)檢查操作碼緩存,無(wú)論文件是否已經(jīng)被緩存。 如果應(yīng)用中包含檢查 PHP 腳本存在性和可讀性的功能,這樣可以提升性能。 但是如果禁用了 opcache.validate_timestamps 選項(xiàng), 可能存在返回過(guò)時(shí)數(shù)據(jù)的風(fēng)險(xiǎn)。
opcache.optimization_level
integer
控制優(yōu)化級(jí)別的二進(jìn)制位掩碼。
opcache.inherited_hack
boolean
該配置指令已被忽略。
opcache.dups_fix
boolean
僅作為針對(duì) “不可重定義類”錯(cuò)誤的一種解決方案。
opcache.blacklist_filename
string
OPcache 黑名單文件位置。 黑名單文件為文本文件,包含了不進(jìn)行預(yù)編譯優(yōu)化的文件名,每行一個(gè)文件名。 黑名單中的文件名可以使用通配符,也可以使用前綴。 此文件中以分號(hào)(;)開(kāi)頭的行將被視為注釋。
簡(jiǎn)單的黑名單文件可能如下所示:
; 將特定文件加入到黑名單 /var/www/broken.php ; 以字符 x 文件打頭的文件 /var/www/x ; 通配符匹配 /var/www/*-broken.php
opcache.max_file_size
integer
以字節(jié)為單位的緩存的文件大小上限。設(shè)置為
0
表示緩存全部文件。
opcache.consistency_checks
integer
如果是非 0 值,OPcache 將會(huì)每隔 N 次請(qǐng)求檢查緩存校驗(yàn)和。 N 即為此配置指令的設(shè)置值。 由于此選項(xiàng)對(duì)于性能有較大影響,請(qǐng)盡在調(diào)試環(huán)境使用。
opcache.force_restart_timeout
integer
如果緩存處于非激活狀態(tài),等待多少秒之后計(jì)劃重啟。 如果超出了設(shè)定時(shí)間,則 OPcache 模塊將殺除持有緩存鎖的進(jìn)程, 并進(jìn)行重啟。
如果選項(xiàng) opcache.log_verbosity_level 設(shè)置為 2 或者 2 以上的數(shù)值,當(dāng)發(fā)生重啟時(shí)將在日志中記錄一條警告信息。
opcache.error_log
string
OPcache 模塊的錯(cuò)誤日志文件。
如果留空,則視為 stderr
,
錯(cuò)誤日志將被送往標(biāo)準(zhǔn)錯(cuò)誤輸出 (通常情況下是 Web 服務(wù)器的錯(cuò)誤日志文件)。
opcache.log_verbosity_level
integer
OPcache 模塊的日志級(jí)別。 默認(rèn)情況下,僅有致命級(jí)別(0)及錯(cuò)誤級(jí)別(1)的日志會(huì)被記錄。 其他可用的級(jí)別有:警告(2),信息(3)和調(diào)試(4)。
opcache.preferred_memory_model
string
OPcache 首選的內(nèi)存模塊。 如果留空,OPcache 會(huì)選擇適用的模塊, 通常情況下,自動(dòng)選擇就可以滿足需求。
可選值包括: mmap
,shm
,
posix
以及 win32
。
opcache.protect_memory
boolean
保護(hù)共享內(nèi)存,以避免執(zhí)行腳本時(shí)發(fā)生非預(yù)期的寫入。 僅用于內(nèi)部調(diào)試。
opcache.mmap_base
string
在 Windows 平臺(tái)上共享內(nèi)存段的基地址。 所有的 PHP 進(jìn)程都將共享內(nèi)存映射到同樣的地址空間。 使用此配置指令避免“無(wú)法重新附加到基地址”的錯(cuò)誤。
opcache.restrict_api
string
僅允許路徑是以指定字符串開(kāi)始的 PHP 腳本調(diào)用 OPcache API 函數(shù)。 默認(rèn)值為空字符串 "",表示不做限制。
opcache.file_update_protection
string
如果文件的最后修改時(shí)間距現(xiàn)在不足此項(xiàng)配置指令所設(shè)定的秒數(shù),那么這個(gè)文件不會(huì)進(jìn)入到緩存中。 這是為了防止尚未完全修改完畢的文件進(jìn)入到緩存。 如果你的應(yīng)用中不存在部分修改文件的情況,把此項(xiàng)設(shè)置為 0 可以提高性能。
opcache.huge_code_pages
string
啟用或者禁用將 PHP 代碼(文本段)拷貝到 HUGE PAGES 中。 此項(xiàng)配置指令可以提高性能,但是需要在 OS 層面進(jìn)行對(duì)應(yīng)的配置。
opcache.lockfile_path
string
用來(lái)存儲(chǔ)共享鎖文件的絕對(duì)路徑(僅適用于 *nix 操作系統(tǒng))。
opcache.opt_debug_level
string
出于對(duì)不同階段的優(yōu)化情況進(jìn)行調(diào)試的目的,生成操作碼轉(zhuǎn)儲(chǔ)。 設(shè)置為 0x10000 會(huì)在進(jìn)行優(yōu)化之前輸出編譯器編譯后的操作碼, 設(shè)置為 0x20000 會(huì)輸出優(yōu)化后的操作碼。
opcache.file_cache
string
配置二級(jí)緩存目錄并啟用二級(jí)緩存。 啟用二級(jí)緩存可以在 SHM 內(nèi)存滿了、服務(wù)器重啟或者重置 SHM 的時(shí)候提高性能。 默認(rèn)值為空字符串 "",表示禁用基于文件的緩存。
opcache.file_cache_only
boolean
啟用或禁用在共享內(nèi)存中的 opcode 緩存。
opcache.file_cache_consistency_checks
boolean
當(dāng)從文件緩存中加載腳本的時(shí)候,是否對(duì)文件的校驗(yàn)和進(jìn)行驗(yàn)證。
opcache.file_cache_fallback
boolean
在 Windows 平臺(tái)上,當(dāng)一個(gè)進(jìn)程無(wú)法附加到共享內(nèi)存的時(shí)候, 使用基于文件的緩存,也即:opcache.file_cache_only=1。 需要顯示的啟用文件緩存。
不鼓勵(lì)禁用此配置項(xiàng), 禁用它可能會(huì)導(dǎo)致進(jìn)程無(wú)法啟動(dòng)。
opcache.validate_permission
boolean
針對(duì)當(dāng)前用戶,驗(yàn)證緩存文件的訪問(wèn)權(quán)限。
opcache.validate_root
boolean
在 chroot 的環(huán)境中避免命名沖突。 為了防止進(jìn)程訪問(wèn)到 chroot 環(huán)境之外的文件,應(yīng)該在 chroot 的情況下啟用這個(gè)選項(xiàng)。
opcache.preload
string
指定要在服務(wù)器啟動(dòng)時(shí)期進(jìn)行編譯和緩存的 PHP 腳本文件, 這些文件也可能通過(guò) include 或者 opcache_compile_file() 函數(shù) 來(lái)預(yù)加載其他文件。 所有這些文件中包含的實(shí)體,包括函數(shù)、類等,在服務(wù)器啟動(dòng)的時(shí)候就被加載和緩存, 對(duì)于用戶代碼來(lái)講是“開(kāi)箱可用”的。
opcache.preload_user
string
考慮到安全因素,禁止以 root 用戶預(yù)加載代碼。該指令方便以其他用戶預(yù)加載。