PHP Conference Japan 2024

執行時期設定

這些函式的行為會受到 php.ini 中設定的影響。

下表列出並說明 WinCache 擴充提供的設定選項

WinCache 設定選項
名稱 預設值 最小值 最大值 可變更性 更新日誌
wincache.fcenabled "1" "0" "1" INI_ALL 自 WinCache 1.0.0 起可用
wincache.fcenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.fcachesize "24" "5" "255" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.fcndetect "1" "0" "1" INI_SYSTEM WinCache 1.1.0 版本起可用
wincache.maxfilesize "256" "10" "2048" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.ocenabled "1" "0" "1" INI_ALL WinCache 1.0.0 版本起可用,2.0.0.0 版本起移除
wincache.ocenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM WinCache 1.0.0 版本起可用,2.0.0.0 版本起移除
wincache.ocachesize "96" "15" "255" INI_SYSTEM WinCache 1.0.0 版本起可用,2.0.0.0 版本起移除
wincache.filecount "4096" "1024" "16384" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.chkinterval "30" "0" "300" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.ttlmax "1200" "0" "7200" INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.enablecli 0 0 1 INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.ignorelist NULL(空值) NULL(空值) NULL(空值) INI_ALL 自 WinCache 1.0.0 起可用
wincache.namesalt NULL(空值) NULL(空值) NULL(空值) INI_SYSTEM 自 WinCache 1.0.0 起可用
wincache.ucenabled 1 0 1 INI_SYSTEM WinCache 1.1.0 版本起可用
wincache.ucachesize 8 5 85 INI_SYSTEM WinCache 1.1.0 版本起可用
wincache.scachesize 8 5 85 INI_SYSTEM WinCache 1.1.0 版本起可用
wincache.rerouteini NULL(空值) NULL(空值) NULL(空值) INI_SYSTEM WinCache 1.2.0 版本起可用,1.3.7 版本起移除
wincache.reroute_enabled 1 0 1 INI_SYSTEM|INI_PERDIR WinCache 1.3.7 版本起可用
wincache.srwlocks 1 0 1 INI_SYSTEM WinCache 1.3.6.3 版本起可用,2.0.0.0 版本起移除
wincache.filemapdir NULL(空值) NULL(空值) NULL(空值) INI_SYSTEM WinCache 1.3.7.4 版本起可用
關於 INI_* 模式更進一步的細節與定義,請參閱設定值的設定位置

以下是設定指令的簡短說明。

wincache.fcenabled 布林值
啟用或停用檔案快取功能。
wincache.fcenabledfilter 字串
定義以逗號分隔的 IIS 網站識別碼清單,用於啟用或停用檔案快取。此設定與 wincache.fcenabled 搭配使用:如果 wincache.fcenabled 設定為 1,則 wincache.fcenabledfilter 中列出的網站將關閉檔案快取;如果 wincache.fcenabled 設定為 0,則 wincache.fcenabledfilter 中列出的網站將開啟檔案快取。
wincache.fcachesize 整數
定義分配給檔案快取的最大記憶體大小(以 MB 為單位)。如果所有快取檔案的總大小超過此設定中指定的值,則將從檔案快取中移除最舊的檔案。
wincache.fcndetect 布林值
啟用或停用檔案變更通知偵測功能。如果支援檔案變更通知,則會在檔案系統上的對應檔案被修改後立即用於重新整理操作碼和檔案快取項目。如果不支援檔案變更通知(例如,使用網路檔案共用時),則 wincache 將會以 wincache.chkinterval 指定的固定時間間隔輪詢檔案變更。
wincache.maxfilesize 整數
定義允許快取的單個檔案的最大大小(以 KB 為單位)。如果檔案大小超過指定的值,則不會快取該檔案。此設定僅適用於檔案快取。
wincache.ocenabled 布林值
警告

此選項已於 2.0.0.0 版中_移除_。

啟用或停用操作碼快取功能。
wincache.ocenabledfilter 字串
警告

此選項已於 2.0.0.0 版中_移除_。

定義以逗號分隔的 IIS 網站識別碼清單,用於啟用或停用操作碼快取。此設定與 wincache.ocenabled 搭配使用:如果 wincache.ocenabled 設定為 1,則 wincache.ocenabledfilter 中列出的網站將關閉操作碼快取;如果 wincache.ocenabled 設定為 0,則 wincache.ocenabledfilter 中列出的網站將開啟操作碼快取。
wincache.ocachesize 整數
警告

此選項已於 2.0.0.0 版中_移除_。

定義配置給操作碼快取的最大記憶體大小(以 MB 為單位)。如果快取的操作碼大小超過指定值,則大部分過期的操作碼將從快取中移除。請注意,操作碼快取大小必須至少是檔案快取大小的 3 倍。如果不是這種情況,操作碼快取大小將會自動增加。
wincache.filecount 整數
定義預期由此擴充功能快取的檔案數量,以便在啟動時配置適當的記憶體大小。如果檔案數量超過指定值,WinCache 將會根據需要重新配置更多記憶體。
wincache.chkinterval 整數
定義擴充功能檢查檔案變更以重新整理快取的頻率(以秒為單位)。將其設定為 0 將會停用快取的重新整理。除非清除程式移除該檔案的快取項目,或是 IIS 應用程式集區已回收,或是呼叫了 wincache_refresh_if_changed 函式,否則檔案變更將不會反映在快取中。
wincache.ttlmax 整數
定義快取項目在未使用狀態下的最大存留時間(以秒為單位)。將其設定為 0 將會停用快取清除程式,因此在 IIS 背景工作處理序的生命週期期間,快取項目將永遠不會從快取中移除。
wincache.enablecli 布林值
定義當 PHP 以命令列 (CLI) 模式執行時是否啟用快取。
wincache.ignorelist 字串

定義不應由此擴充功能快取的檔案清單。檔案清單僅使用檔案名稱指定,並以管道符號「|」分隔。

範例 #1 wincache.ignorelist 範例

wincache.ignorelist = "index.php|misc.php|admin.php"

wincache.namesalt 字串
定義在命名儲存在共用記憶體中的擴充功能特定物件時將使用的字串。這是用於避免如果 IIS 背景工作處理序中的其他應用程式嘗試存取共用記憶體時可能發生的衝突。namesalt 字串的長度不能超過 8 個字元。
wincache.ucenabled 布林值
啟用或停用使用者快取功能。
wincache.ucachesize 整數
定義配置給使用者快取的最大記憶體大小(以 MB 為單位)。如果儲存在使用者快取中的變數總大小超過指定值,則大部分過期的變數將從快取中移除。
wincache.scachesize 整數
定義配置給工作階段快取的最大記憶體大小(以 MB 為單位)。如果儲存在工作階段快取中的資料總大小超過指定值,則大部分過期的資料將從快取中移除。
wincache.rerouteini 字串
警告

此選項已從 1.3.7 版開始_移除_。請參閱 wincache.reroute_enabled 以了解 1.3.7 版之後的類似功能。

指定 reroute.ini 檔案的絕對或相對路徑,該檔案包含應將其實作取代為 WinCache 函式等效項的 PHP 函式清單。如果指定相對路徑,則假設其相對於 php-cgi.exe 檔案的位置。
wincache.reroute_enabled 布林值
透過檔案快取啟用或停用某些檔案 I/O 函式的重新路由。
wincache.srwlocks 布林值
警告

此選項已於 2.0.0.0 版中_移除_。

啟用或停用共用讀寫鎖定。停用此功能有助於排解 WinCache 中的死結狀況。
wincache.filemapdir 字串
指定 WinCache 儲存共用記憶體區段所用暫存檔的絕對路徑。 此目錄必須位於本機電腦上,而不是網路檔案系統上。 如果未指定目錄,WinCache 將使用 Windows 系統分頁檔作為所有共用記憶體區段。

新增註記

使用者貢獻的註記 2 則註記

ericsten at php dot net
9 年前
[編者註:已修正拼寫錯誤]

關於我最近在除錯 WinCache 問題時發現的一些事情的簡短說明

如果您更改 wincache.scachesize 值,您「必須」關閉所有 php-cgi.exe 執行個體並手動刪除 wincache_session_*.tmp 檔案。

wincache_session_*.tmp 檔案將位於 php.ini 檔案中 session.save_path 指定的目錄中。

範例工作階段檔案名稱如下所示:wincache_session_1_565779.tmp

如果您不刪除此檔案,WinCache 工作階段處理常式的跨行程共用記憶體區段將會損毀。這些損毀將顯示為來自 IIS 伺服器的 500 錯誤。

謝謝!

--E.
軟體記者
4 年前
wincache.php 在「工作階段快取概覽」中顯示可用記憶體傳回 NAN B。

Google 搜尋沒有返回任何與此相關的特定結果。

停止應用程式集區並刪除 Windows 暫存目錄中的 *session*.tmp 檔案解決了此問題。(感謝之前的註記者)
To Top