PHP 解釋執行流程:讀取腳本 → 詞法分析 → 語法分析 → 編譯為 Opcode → 執行。對於相同腳本的重複請求,編譯階段重複消耗 CPU。PHP Accelerator (及後繼者 APC, OPcache) 將編譯後的 Opcode 快取於共享記憶體,直接跳過編譯階段,大幅提升吞吐量。
wget https://www.php-accelerator.co.uk/download.php
tar -zxvf php_accelerator_1.2p2.tar.gz
cd php_accelerator_1.2p2
phpize
./configure --enable-phpa
make && make install
編譯產出 php_accelerator_1.2p2.so (路徑視 PHP 安裝而定,如 /usr/local/php/lib/php/extensions/)。
訪問 https://www.php-accelerator.co.uk/activate.php 註冊 SERVER_NAME (如 www.freelamp.com),獲得金鑰:8edfd13946c96309244fcca309415902。
; 載入擴充 (路徑依實際安裝位置調整)
zend_extension=/usr/local/php/php_accelerator_1.2p2.so
; 註解掉舊版 Zend Optimizer (衝突)
; zend_extension=/usr/local/Zend/lib/ZendOptimizer.so
; === PHP Accelerator 專用設定 ===
; 虛擬主機環境建議使用 php_value (httpd.conf/.htaccess)
; 單一網域可直接寫於 php.ini
phaa.registration_key = 8edfd13946c96309244fcca309415902
; 效能調優參數
phaa.tweaks = on
phaa.cache_dir = /tmp
phaa.file_perms = 400
phaa.ignore_files = "/index.php,/admin/test.php"
; phaa.ignore_dirs = "/data/WWW/site1/,/cache/"
phaa.shm_size = 8 ; 共享記憶體大小 (MB)
phaa.shm_key = 0xc0deb00 ; 共享記憶體金鑰
phaa.shm_perms = 664
<VirtualHost 10.20.30.40>
ServerName www.freelamp.com
# ... 其他設定 ...
php_value phpa.registration_key 8edfd13946c96309244fcca309415902
php_value phpa 1
</VirtualHost>
apachectl graceful
# 觀察 /tmp 目錄出現 phpa_* 快取檔案
# phpinfo() 輸出應顯示:
# "with the PHP Accelerator v1.2p2, Copyright (c) 2001-2002, by Nick Lindridge"
# 觀察記憶體快取狀態
phpa_cache_admin -mv
# 觀察檔案快取狀態
phpa_cache_admin -fv
# 設定快取大小 (需 root)
phpa_cache_admin -k 16 # 設為 16MB
; php.ini (PHP 7/8)
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 為 Zend 官方維護、效能更強、無授權金鑰限制,是現代 PHP 部署標準配置。
PHP Accelerator 以 Opcode 快取技術解決 PHP 解釋執行效能瓶頸,配置簡單、效果顯著 (典型提升 5-10 倍吞吐量)。雖舊版本需授權金鑰,但其核心原理延續至今日 OPcache,理解其配置參數 (共享記憶體大小、快取目錄、忽略檔案) 仍具高度實務價值。