2011-11-21 74 views
1

我偶然發現了Memcached服務器(版本1.4.5)的一個奇怪行爲: 我有一臺服務器,我試圖刪除一個存儲值,它不起作用項目仍然存在(我沒有收到任何錯誤)。Memcached項目刪除不起作用

我寫了一個快速的PHP代碼,顯示問題:

$memcache_object = memcache_connect(MEMCACHED_SERVER_ADDRESS, MEMCACHED_SERVER_PORT); 
$key = '64b788714dx7cds5350101e37ec0ddd40253123d'; 

$myObject = memcache_get($memcache_object, $key); 
echo count($myObject); // Prints 1000 

memcache_delete($memcache_object, $key); 

$myObjectSecondTry = memcache_get($memcache_object, $key); 
if (empty($myObjectSecondTry)) 
    echo 'Empty'; // It does print it's empty 

memcache_close($memcache_object); 

現在,如果我運行的代碼,一旦它說:「1000」並且還表示,目標是在第二memcache_get空()嘗試。 但是如果我點擊刷新並重新運行它,那麼$ key仍然存在於memcached服務器上,我得到的的輸出相同。

我也嘗試在每個memcache調用(即get-> delete-> get)之間重新連接,但它沒有幫助。

清除內存的唯一方法是重置Memcached服務。

請指教。

回答

1

至於我記得,那是有超時的問題所以請您嘗試使用:

memcache_delete($memcache_object, $key, 0);