我是memcached的新手,但我确实需要在网站上快速修复此错误
我不知道在哪里切入?
我可以做些什么来找出哪个节点或密钥memcached无法获取?
我可以查看任何日志文件吗?
答案 0 :(得分:0)
当您存储对文件描述符或数据库连接等资源的引用的对象时,会发生这种情况。如果你从getcached那里得到的对象是一个没有加载的类,也会发生这种情况。
要找出哪个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');