根据php.net,memcache_connect()
should return TRUE
on success or FALSE
on failure。因此,我认为即使我将缓存服务器地址更改为不存在的地址,以下代码也应该有效,但它没有:
$memcache=memcache_connect('myCacheServer.com', 11211);
if($memcache){
$this->connect=$memcache;
}
else{
$memcache=memcache_connect('localhost', 11211);
$this->connect=$memcache;
}
以下是我收到的错误消息:
Message: memcache_connect(): php_network_getaddresses: getaddrinfo failed: Temporary
failure in name resolution
有谁知道我怎么能设置这个简单的布尔值?
答案 0 :(得分:0)
我找到了php.net's Memcache documentation部分有效的解决方案。这意味着,显示给用户的错误会被抑制,但如果缓存服务器不存在,您仍然需要等待很长的超时。
这是我的代码:
$host='myCacheServer.com';
$port=11211;
$memcache = new Memcache();
$memcache->addServer($host, $port);
$stats = @$memcache->getExtendedStats();
$available = (bool) $stats["$host:$port"];
if ($available && @$memcache->connect($host, $port)){
$this->connect=$memcache;
// echo 'true';
}
else{
$host='localhost';
$memcache->addServer($host, $port);
$this->connect=$memcache;
//echo 'false';
}
答案 1 :(得分:0)
我使用此代码进行检查连接
function checkConnection()
{
try {
$client = $this->initClient();
$data = @$client->getVersion();
} catch (Exception $e) {
$data = false;
}
return !empty($data);
}