背景
eAccelerator 是一個免費開源的PHP加速、優化、編譯和動態緩存的項目,它可以通過緩存PHP代碼編譯後的結果來提高PHP腳本的性能。通過使用eAccelerator,可以優化PHP代碼執行速度,降低服務器負載,使PHP應用執行速度提高1-10倍。
eAccelerator 項目誕生於2004年,當時它是作為 Turck MMCache 項目的一個分支提出並投入開發的。 Turck MMCache 由 Dmitry Stogov 開發,是個非常優秀的PHP內存緩存加速系統,如今仍然有很大部分 eAccelerator 的代碼應用到該項目中。
原理
eAccelerator 通過把經過編譯後的PHP代碼緩存到共享內存中,並在用戶訪問的時候直接調用從而起到高效的加速作用。它的效率非常高,從創建共享內存到查找編譯後的代碼都在非常短的時間內完成,對於不能緩存到共享內存中的文件和代碼,eAccelerator還可以把他們緩存到系統磁盤上。
安裝:
wget
http://bart.eaccelerator.net/sou ... tor-0.9.6.1.tar.bz2
tar -jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make && make install
建立緩存目錄
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
配置參數:
eaccelerator.shm_size=”32″
eAccelerator 可以使用的共享內存的數量 (以兆為單位) . “0″ 是指操作系統的默認值. 默認值是 “0″.可根據服務器的實際情況來調整,16,32,64,128都是可以的。
eaccelerator.cache_dir=”/home/php/tmp”
這個目錄是給磁盤緩存使用. eAccelerator 在這里儲存預先編譯好的代碼, 進程數據, 內容以及用戶的自定義內容. 同樣的數據也能被儲存在共享內存中 (這樣可以提高訪問速度). 默認的設置是 “/tmp/eaccelerator”.
eaccelerator.enable=”1″
開啟或關閉 eAccelerator。”1″ 為開啟,”0″ 為關閉。默認值為 “1″。
eaccelerator.optimizer=”1″
啟或關閉內部優化器,可以提升代碼執行速度。”1″ 為開啟,”0″ 為關閉。默認值為 “1″。
eaccelerator.check_mtime=”1″
打開或者關閉 PHP 的文件修改檢查. “1″ 是指打開, “0″ 是指關閉. 如果您在修改以後重新編譯 PHP 的文件,那麼您應當設置為 “1″. 默認值是 “1″.
eaccelerator.debug=”0″
開啟或關閉調試日志記錄。”1″ 為開啟,”0″ 為關閉。默認值為 “0″。會將緩存命中得記錄寫入日志。
eaccelerator.filter=”"
判斷哪些 PHP 文件必須緩存。您可以指定緩存和不緩存的文件類型(如 “*.php *.phtml”等)
如果參數以 “!” 開頭,則匹配這些參數的文件被忽略緩存。默認值為 “”,即,所有 PHP 文件都將被緩存。
eaccelerator.shm_max=”0″
當使用 ” eaccelerator_put() ” 函數時禁止其向共享內存中存儲過大的文件。該參數指定允許存儲的最大值,單位:字節 (10240, 10K, 1M)。”0″ 為不限制。默認值為 “0″。
eaccelerator.shm_ttl=”0″
當 eAccelerator 獲取新腳本的共享內存大小失敗時,它將從共享內存中刪除所有在最後 “shm_ttl” 秒內沒有存取的腳本緩存。默認值為 “0″,即:不從共享內存中刪除任何緩存文件。
eaccelerator.shm_prune_period=”0″
當 eAccelerator 獲取新腳本的共享內存大小失敗時,他將試圖從共享內存中刪除早於”shm_prune_period” 秒的緩存腳本。默認值為 “0″,即:不從共享內春中刪除任何緩存文件。
eaccelerator.shm_only=”0″
允許或禁止將已編譯腳本緩存在磁盤上。該選項對 session 數據和內容緩存無效。默認值為 “0″,即:使用磁盤和共享內存進行緩存。
eaccelerator.compress=”1″
允許或禁止壓縮內容緩存。默認值為 “1″,即:允許壓縮。
eaccelerator.compress_level=”9″
指定內容緩存的壓縮等級。默認值為 “9″,為最高等級。
eaccelerator.keys = “disk_only”
eaccelerator.session = “disk_only”
eaccelerator.content = “disk_only”
設置內容緩存的存放的地方,可以設置為:
shm_and_disk 在共享緩存和硬盤(默認值)
shm 默認存在共享內存,如果共享內存已滿或大小超過 “eaccelerator.shm_max” 的值,就存到硬盤
shm_only 只存放在共享內存
disk_only 只存放在硬盤
none 不緩存數據
eaccelerator.allowed_admin_path = “/home/eaccelerator”
允許得到管理信息和管理操作的腳本路徑。
控制面板及反匯編:
如果要使用控制面板,則需要在編譯eAccelerator時加上 –with-eaccelerator-info選項,這個是默認值。
復制control.php文件到你的跟目錄下,並且設置這個路徑到php.ini 或者 eaccelerator.ini的eaccelerator.allowed_admin_path選項。如果不這樣做,將看不到更多的相關信息,也不能控制eAccelerator。
可以在control.php文件中設置進入控制面板的用戶名和密碼。
當使用–with-eaccelerator-disassembler編譯時,需要把dasm.php和PHP_Highlight.php也放到control.php目錄里面。反匯編需要在編譯PHP時加上對tokenizer的支持(–enable-tokenizer),可以在dasm.php文件的上面修改執行反匯編時的用戶名和密碼。
設置樣本:
extension=php_eaccelerator.dll
[eaccelerator]
eaccelerator.shm_size = "512"
eaccelerator.cache_dir = "D:\php_eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "300"
eaccelerator.shm_prune_period = "600"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
celerator.log_file = "D:\php_eaccelerator_log"
eaccelerator.keys = "shm_and_disk"
eaccelerator.session = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
eaccelerator.allowed_admin_path = "D:\WEB"