eAccelerator 是 PHP 的 opcode 緩存與優化加速器,能顯著提升 PHP 執行性能。本文記錄 IIS + PHP 5.2.8 (ISAPI 模式) 環境下安裝配置 eAccelerator 0.9.5.3 的關鍵步驟與避坑指南。
php5isapi.dll)eAccelerator0953_5.2.8.dll)核心發現:zend_extension_ts 指令 必須置於 [Zend] 區塊之前,否則 eAccelerator 無法載入 (PHP 啟動時模組初始化順序導致)。
php.ini [Zend] 之前)[eAccelerator]
zend_extension_ts = "D:\PHP\ext\eAccelerator0953_5.2.8.dll"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "D:\PHP\temp"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm"
eaccelerator.sessions = "shm"
| 參數 | 推薦值 | 說明 |
|---|---|---|
zend_extension_ts | DLL 絕對路徑 | TS = Thread Safe (ISAPI/Apache worker 需用 ts 版) |
shm_size | 32 (MB) | 共享內存大小,根據網站數量/代碼量調整 (64-256MB 常見) |
cache_dir | D:\PHP\temp | 緩存目錄,需 IIS_WPG/Users 讀寫權限,創建後勿移動 |
enable | 1 | 啟用加速器 |
optimizer | 1 | 啟用代碼優化 (移除無用指令、內聯優化等) |
check_mtime | 1 | 檢查文件修改時間,自動更新緩存 (開發環境建議 1,生產可設 0 提升性能) |
compress | 1 | 啟用緩存壓縮 (zlib),節省共享內存 ~30-50% |
compress_level | 9 | 壓縮級別 (1-9),9 最高壓縮率 |
keys/sessions | shm | 用戶鍵值/Session 存儲於共享內存 (高性能) |
eAccelerator0953_5.2.8.dll 放入 PHP 擴展目錄 (如 D:\PHP\ext\)D:\PHP\temp,設置權限:IIS_WPG / Users 讀寫修改php.ini,在 [Zend] 前插入上方配置php.ini → 重啟 IIS:iisreset瀏覽器訪問 phpinfo() 頁面,搜索 eAccelerator 應顯示:
eAccelerator support: enabledVersion: 0.9.5.3Shared memory: 32 MBCache directory: D:\PHP\temp| 現象 | 原因 | 解決 |
|---|---|---|
| phpinfo 無 eAccelerator 信息 | 配置位置錯誤 (在 [Zend] 後) | 移至 [Zend] 前 |
| IIS 500 錯誤 / PHP 啟動失敗 | DLL 路徑錯誤 / 版本不匹配 (TS/NTS) | 確認 php5isapi.dll 為 TS 版,使用對應 ts DLL |
| 緩存目錄權限錯誤 | IIS 工作進程身份無寫入權限 | 授予 IIS_WPG/NETWORK SERVICE 完全控制 |
| 與 Zend Optimizer 衝突 | 加載順序/共享內存衝突 | eAccelerator 在前,Zend 在後;調整 shm_size |
現代替代:PHP 5.5+ 內建 Zend OPcache (原 Zend Optimizer+),性能優於 eAccelerator、無需第三方擴展、配置更簡單。PHP 7/8 強制建議使用 OPcache。eAccelerator 官方已停止更新 (最後版本 2012 年)。