2011-09-16 97 views
1

我修整我的PHP代碼中使用內存緩存:memcache的PHP不會過期

$memcache = new Memcache; 
$memcache->connect('10.0.0.21', 11244) or die ("Could not connect"); 
$store = 10; # in seconds 
$cache_key = "Counter"; 

$counter = $memcache->get($cache_key); 
if (empty($counter)) 
{ 
    $counter = $this->getTotal(); 
    $result = $memcache->replace($cache_key, $counter); 
    if($result == false) 
    { 
     $memcache->set($cache_key, $counter, 0, $store); 
    } 
} 

echo $counter; 

什麼情況是,值不更新。它在同樣的日子裏保持着同樣的狀態 - 遠遠超過我在代碼中設置的10秒到期時間。 我在做什麼錯?我的理解是,鑰匙在10秒後會被移除,但看起來不會。

回答

2

如果密鑰不存在,您只設置過期時間。您需要在通話將其設置爲replace,太:

$result = $memcache->replace($cache_key, $counter, 0, $store); 

應該解決您的問題。