eAccelerator(前身 turck-mmcache)是一款開源的 PHP 加速器,支持 PHP 5 及以上版本。它通過共享內存或磁盤文件緩存 PHP 編譯後的中間代碼(Opcode),顯著降低腳本解析開銷,同時提供一組靈活的用戶級緩存 API,適合高併發場景下的數據緩存需求。
| 函數 | 說明 | 參數 | 返回值 |
|---|---|---|---|
eaccelerator_put($key, $value, $ttl=0) |
將變量存入共享內存緩存 | $key: 鍵名 $value: 任意類型數據(PHP 4 支持對象,PHP 5 需序列化) $ttl: 生存秒數,0 為永久 |
成功返回 true |
eaccelerator_get($key) |
從緩存讀取數據 | $key: 鍵名 | 命中返回數據,未命中或過期返回 NULL |
eaccelerator_rm($key) |
刪除指定鍵的緩存 | $key: 鍵名 | 成功返回 true |
eaccelerator_gc() |
清理所有過期鍵 | 無 | 無 |
eaccelerator_lock($key)eaccelerator_unlock($key) |
進程級鎖機制,保證並發安全 | $key: 鎖標識 | 加鎖成功返回 true |
eaccelerator_cache_output($key, $eval_code, $ttl=0) |
緩存 PHP 代碼的輸出內容 | $eval_code: 字符串形式的 PHP 代碼 | 直接輸出並緩存 |
eaccelerator_cache_result($key, $eval_code, $ttl=0) |
緩存 PHP 代碼的執行結果(返回值) | $eval_code: 字符串形式的 PHP 表達式 | 返回表達式值並緩存 |
eaccelerator_cache_page($key, $ttl=0) |
整頁緩存 | $key: 通常用 $_SERVER['PHP_SELF'] 等標識 |
直接輸出頁面並緩存 |
eaccelerator_rm_page($key) |
刪除整頁緩存 | $key: 頁面標識 | 成功返回 true |
<?php
// 線程安全計數器
eaccelerator_lock("counter");
$count = eaccelerator_get("counter") ?: 0;
eaccelerator_put("counter", ++$count);
eaccelerator_unlock("counter");
echo "Page views: $count";
// 對象緩存演示(需序列化)
class User {
public $name;
function __construct($n) { $this->name = $n; }
function greet() { return "Hello, {$this->name}!"; }
}
$user = eaccelerator_get("current_user");
if (!$user) {
$user = new User("Alice");
eaccelerator_put("current_user", serialize($user), 3600);
} else {
$user = unserialize($user);
}
echo $user->greet();
?>
serialize()/unserialize()。eaccelerator.shm_size 需根據業務數據量預留足夠共享內存,避免頻繁驅逐導致性能抖動。eAccelerator 不僅是 Opcode 加速器,其用戶級 API 為 PHP 應用提供了高性能的本地緩存能力。合理運用 put/get/lock 可替代 Memcached/Redis 等外部組件,簡化架構並降低網絡延遲;cache_page/output/result 則適合靜態化程度高的頁面片段。但在分佈式部署時需注意緩存一致性問題,建議僅用於單機或會話親和性場景。