我遇到了pecl/memcached客户端的奇怪问题。在我的设置中,我有3个memcached服务器。当我停止(这是一个ec2实例)其中一个memcached服务器来模拟完全失败时,“get”操作需要4秒才能完成。我如何强制它提前超时?memcached服务器故障转移
下面是一些代码片段:
$this->memcache = new Memcached;
$this->memcache->setOption(Memcached::OPT_DISTRIBUTION ,Memcached::DISTRIBUTION_CONSISTENT);
$this->memcache->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE ,TRUE);
...
foreach($CFG->data_memcache_servers as $server){
if (!$this->memcache->addserver($server,11211)){
throw new Exception('Unable to connect to memcache server');
}
}
...
$data = $this->memcache->get($key);
是memcached的哪些数据? – Bil 2011-05-03 22:23:59
数据只是一个垃圾对象。 我想通了。需要使用Memcached :: OPT_CONNECT_TIMEOUT。看起来连接发生在“get”而不是在addserver()处。 – 2011-05-03 22:57:34
只有在需要时才建立连接(在'Memcache :: get'调用中) – Bil 2011-05-04 00:25:05