Memcached PHP模块:如何判断连接是否失败?

时间:2011-09-02 00:27:17

标签: php memcached

在php文件中,我有:

<?php
$m = new Memcached();
echo get_class($m);
echo "<br>";
echo $m->addServer('192.168.1.77', 11211, 1);
$m->set("foo", "bar");
?>

跑步时,大约半秒后,我得到:

Memcached
1

如果我停止memcached,大约5秒后,我得到:

Memcached
1

我期待更像......

Memcached
0

您如何知道您是否成功点击了memcached服务器?我完全希望它像addServer的返回值一样简单...... :(

4 个答案:

答案 0 :(得分:3)

这是我正在寻找的东西:Memcached :: getStats();

所以,我写道:

add_memcached_server($m, $addr, $port)
{
    $m->addServer($addr,$port);
    $statuses = $m->getStats();
    return isset($statuses[$addr.":".$port]);
}

就像一个魅力......

答案 1 :(得分:1)

答案是

   /**
   * check for connection was established
   * @param resource $m
   * @param string $host
   * @param int $port
   * @access public
   * @return bool
   */
   function memConnected($m, $host, $port = 11211)
   {
      $statuses = $m->getStats();
      return (isset($statuses[$host.":".$port]) and $statuses[$host.":".$port]["pid"] > 0);
   }

答案 2 :(得分:0)

我就这样做了

/**
 * Add memcached server
 * @param String $new_ New Memcahed
 * @param String $addr Address
 * @param String $port Port
 * @return boolean
 */
function add_memcached_server($new_, $addr, $port)
{
    $new_->addServer($addr,$port);
    $statuses = $new_->getStats();
    if($statuses[$addr.':'.$port]['uptime']<1){
        return false;
    }else{
        return true;
    }
}

答案 3 :(得分:-1)

http://php.net/memcache.addserver表示

  

使用此方法时(与Memcache :: connect()和Memcache :: pconnect()相反),在实际需要之前不会建立网络连接。

所以addServer无法知道网络连接是否已建立

使用http://php.net/memcache.connect代替