使用 eAccelerator加速PHP代碼
eAccelerator 真是個好東西(它的前身是truck-mmcache)。
簡單來講它是一套配合PHP(支援PHP5)運作的快取系統,透過共享記憶體或磁碟檔案方式交換資料。
它被廣為使用的是PHP原始碼「編碼」(不太貼切的稱為「加密」)和快取PHP執行的中間碼以加速。關於 eA 的安裝使用的文章已經很多而且也很詳細了,這次我想推薦的是用它輔助程式設計緩存,它提供了一組API如下:
是一個非常便捷而又穩定的本機快取實現方式,目前這部分設計似乎只支援於共享內存,所以只能用於 Unix -Like OS 了,windows的就沒這個福氣了。
1. eaccelerator_put($key, $value, $ttl=0)
將 $value 以 $key 為鍵名存入快取(php4下支援對像類型,且看源碼好像zend2裡$key 為鍵名存入快取(php4下支援對象類型,看源碼好像zend2裡不支援了) ,$ttl 是這個快取的生命週期,單位是秒,省略該參數或指定為 0 表示不限時,直到伺服器重新啟動清空為止。
2. eaccelerator_get($key)
根據 $key 從快取中傳回對應的 eaccelerator_put() 存進去的數據,如果此快取已過期或不存在那麼回傳值是為NULL . ($key)
依照 $key 移除快取
4. eaccelerator_gc()
移除清除所有已過期的 key
5. 移除清除所有已過期的 key 鎖定操作,以確保多進程多執行緒操作時資料的同步。需要呼叫 eaccelerator_unlock($key) 來釋放這個鎖定或等待程式請求結束時自動釋放這個鎖定。
例如:
eaccelerator_lock("count");
e 6 . eaccelerator_unlock($key)
根據 $key 釋放鎖定
7. eaccelerator_cache_output($key, $ ) 同 eacclerator_put)
For Example:
將 $eval_code 程式碼的執行結果快取 $ttl 秒,($ttl參數同 eacclerator_put),類似 cache_output
9. eaccelerator_cache_page($key, $ttl=0)
將目前整頁快取$ttl 秒。
For Example:
eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_SERVER)
phpinfo();
?>
10. eaccelerator_rm_page($key)
刪除由 eaccelerator_cache_page(🎜> 刪除由 eacceler1_cache_page()]簡單執行的快取,它的威力,注意在 cli 模式下可能無效!)
class test_cache {
var $pro = 'hello'; n";
}
function func() {
echo ', the worldH date ('Y-m-d H:i:s', $t);
}
}
$tt = eaccelerator_get("test_tt");
if (!$tt)
{
> $tt = new test_cache;
eaccelerator_put("test_tt", $tt);
echo "no cached!
n";
echo "no cached!
n"; br>n";
}
echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
? >
以下是網友的留言:
------------------------------------- -------------------------------------------
showsa 回覆於: 2005-12-31 19:51:56win 也支持! http://www.arnot.info/eaccelerator/
信天翁 回覆於:2006-01-04 17:17:37最新版 eAccelerator 0.9.4-rc1 中有個小bugbug者表現為 /var /error_log 出現大量 [warn] (32)Broken pipe: write pipe_of_death 的錯誤訊息 解決方法 修改 debug.c 檔案 ------------------------- ---------------------- /** * 關閉偵錯系統。 */ void ea_debug_shutdown () { fflush (F_fp); // 源語句, 關閉檔案時未偵測文件句柄 //fclose (F_fp); //改為 if (F_fp != stderr) fclose (F_fp) 006-01-10 22:01:21eAccelerator/truck- mmcache太恐怖了,我現在有兩個負載很高的系統,一個基於Drupal,另一個基於PostNuke,用了eAccelerator後,Drual速度提升100倍,PostNuke提升10倍,PostNuke提升比較少是因為它本身就很快.
wangyih 回覆於:2006-04-08 10:48:11和使用squid比怎麼樣
showsa 回覆於:2006-04-08 23:23:4444怎麼去和 squid怎麼去比不一樣的東西 squid是快取頁面運行結果 如果不是即時顯示,squid肯定強了 但是論壇之類的,squid就不行了,用eaccelerator /memcache 可以大幅提升效率
Yarco 回復於:2006- 04-09 10:00:43但是據說和encode過的程式碼有衝突啊... 不知道現在的和zend的兼容性如何?
以上就介紹了translateaccelerator 使用 eAccelerator加速PHP程式碼的目的,包含了translateaccelerator方面的內容,希望對PHP教學有興趣的朋友有幫助。