0
我是新來的memcached,但我確實需要解決這個錯誤很快在網站上警告:內存緩存::得到()[memcache.get]:節點不再存在
我不知道在哪裏削減在?
我能做些什麼來找出哪個節點或密鑰memcached未能獲得?
我可以查看任何日誌文件嗎?
我是新來的memcached,但我確實需要解決這個錯誤很快在網站上警告:內存緩存::得到()[memcache.get]:節點不再存在
我不知道在哪裏削減在?
我能做些什麼來找出哪個節點或密鑰memcached未能獲得?
我可以查看任何日誌文件嗎?
當您存儲引用了資源(如文件描述符或數據庫連接)的對象時,會發生這種情況。如果你得到的對象是一個類,當你從memcached中得到它的時候它沒有被加載,它也會發生。
要找出哪個memcached密鑰失敗,可以在調用Memcached :: get之前設置一個自定義錯誤處理程序,該處理程序可以訪問memcached密鑰,然後再恢復它。然後,您可以將該警告與鑰匙一起記錄下來。
[編輯]這裏有一個例子:
<?
class MyMemcachedWrapper {
private $key;
public function get($key) {
// Save the key in an instance variable so it will be available in
// the error handler
$this->key = $key;
set_error_handler(array($this, 'handleError'));
$value = Memcached::get($key);
restore_error_handler();
return $value;
}
public function handleError($errno, $errstr) {
// Here we have both the key and the error message from memcached
$message = "Memcached error '$errstr' while fetching key '{this->key}'";
// ... and we can log it to a file or db or something
file_put_contents("memcached-errors.log", $message, FILE_APPEND);
}
}
// Then use it like this
$memcached_wrapper = new MyMemcachedWrapper();
$value = $memcached_wrapper->get('xyz');
,我認爲你的答案是什麼,我需要。但我真的不知道如何繼續實現自定義錯誤處理程序,以便在GET之前訪問密鑰。你能給我一些代碼嗎? – Hao 2011-11-03 03:01:17
我在找到鑰匙後還能做些什麼? – Hao 2011-11-03 04:15:15