在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的返回值一样简单...... :(
答案 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
无法知道网络连接是否已建立