四大擴展定位快速表
| 擴展 | 類型 | 核心功能 | 適用場景 | 現狀 |
| eAccelerator | Opcode Cache | 編譯緩存、腳本優化 | PHP 5.3 時代舊專案 | 停止維護 |
| Xcache | Opcode Cache | 編譯緩存、變數快取、管理介面 | PHP 5.3~5.6 維護專案 | 輕量穩定,仍可用 |
| APC / APCu | Opcode + User Cache | 系統緩存(Opcode) + 使用者資料快取 | PHP 5.4~5.6 | PHP 5.5+ 內建 OpCache 取代 |
| memcached | 分散式記憶體快取 | 跨伺服器共享 Key-Value 資料快取 | 高流量、分散式架構、Session 共享 | 持續維護,生產標配 |
核心差異解析
Opcode Cache (eAccelerator / Xcache / APC)
- 加速 PHP「執行層」:避免重複編譯 .php 檔案
- 單機有效,不跨伺服器共享
- PHP 5.5+ 內建 Zend OpCache 已取代所有第三方 Opcode Cache
資料快取
- APC/u 提供
apc_store/fetch 供使用者資料快取
- memcached 為獨立 Daemon,多台 PHP-FPM 可共享,支援叢集
- Redis 現為更強替代方案(資料結構豐富、持久化、Lua 腳本、Sentinel/Cluster)
選型建議(2024 版)
- PHP 7.0+:直接啟用
opcache.enable=1,不需額外安裝
- 資料快取:首選 Redis,次選 memcached
- 舊專案 PHP 5.6 維護期:
Xcache + memcached 組合穩定可靠
- 避免同時啟用多個 Opcode Cache(會衝突)
實測經驗分享
APC 早期版本在快取條目超過一定閾值後效能急劇下降,memcached 則較平穩。生產環境長期觀察下,Xcache + memcached 組合在 PHP 5.6 專案上表現最佳。
快速啟用 Zend OpCache 範例 (php.ini)
[opcache]
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.enable_cli=1