Zend Optimizer 是 Zend Technologies 開發的免費 PHP 執行期優化擴充套件。它通過優化中間碼、快取編譯結果,官方宣稱可提升 **20%~40% 執行效能**。支援解碼由 Zend Guard 加密的 PHP 檔案。注意:PHP 5.5+ 內建 OPcache,已取代 Zend Optimizer。
[Zend] ; 優化等級:1023 = 開啟全部 10 個優化通道 zend_optimizer.optimization_level = 1023 ; 是否支援 Zend Guard 加密檔案:0=關閉(建議), 1=開啟 zend_optimizer.encoder_loader = 0 ; 優化器元件目錄 zend_extension_manager.optimizer_ts = "D:\PHP\Zend\lib\Optimizer-3.3.0" ; Zend Extension Manager 核心 DLL zend_extension_ts = "D:\PHP\Zend\lib\ZendExtensionManager.dll"
控制啟用哪些優化通道,數值為各通道代碼之和:
| 通道 | 代碼 | 功能 |
|---|---|---|
| PASS 1 | 1 | 常數摺疊、靜態計算 |
| PASS 2 | 2 | 死碼消除 |
| PASS 3 | 4 | 函數內聯 |
| PASS 4 | 8 | 迴圈優化 |
| PASS 5 | 16 | 變數優化 |
| PASS 6 | 32 | 進階優化 |
| PASS 7 | 64 | 記憶體管理優化 |
| PASS 8 | 128 | 例外處理優化 |
| PASS 9 | 256 | 字串優化 |
| PASS 10 | 512 | 最新優化 |
zend_extension_manager.optimizer_ts:優化器元件所在目錄(含版本號子目錄)。zend_extension_ts:ZendExtensionManager.dll 完整路徑(Thread Safe 版)。zend_extension(無 _ts 後綴)。多個優化器同時載入易衝突。建議僅保留一個。若必須共存,在 php.ini 底部強制關閉 Zend 優化:
; 讓 Zend Optimizer 僅作為解碼器,不做優化 zend_optimizer.optimization_level = 0
| 現象 | 原因 | 解決 |
|---|---|---|
| Apache 啟動報錯 "Unable to load dynamic library" | 路徑錯誤、DLL 版本不符、缺少 VC++ Redistributable | 確認路徑、下載對應 PHP 版本/TS/NTS 的 Zend Optimizer、安裝 VC++ 2008/2010 Runtime |
| 事件檢視器出現 Event ID 487/5 (Zend Optimizer) | C:\Windows\Temp 寫入權限不足 | 給 IIS_WPG、Network Service、IUSR 資料夾「修改」權限;或在 php.ini 設定 upload_tmp_dir 指向可寫目錄 |
| PHP 資訊頁未顯示 Zend Optimizer 區塊 | 配置未生效、載入順序錯誤 | 確認 zend_extension_ts 在 [Zend] 區塊之前載入;重啟 Web 伺服器 |
; php.ini (PHP 5.5+) zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.fast_shutdown=1
OPcache 內建、效能更強、維護更簡單,是現代 PHP 的標準選擇。