使用PHP检查是否存在memcache连接?

时间:2012-09-19 00:53:22

标签: php connection memcached

根据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

有谁知道我怎么能设置这个简单的布尔值?

2 个答案:

答案 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);
}