Модуль Memcached PHP: Как узнать, не удалось ли установить соединение? - PullRequest
3 голосов
/ 02 сентября 2011

в 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 ]

3 голосов
/ 02 сентября 2011

Это то, что я искал: Memcached :: getStats ();

Итак, я написал:

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

работает как шарм ...

1 голос
/ 09 октября 2013

Ответ

   /**
   * 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);
   }
0 голосов
/ 06 июля 2016

Вот как я это сделал

/**
 * 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;
    }
}
0 голосов
/ 02 сентября 2011

http://php.net/memcache.addserver гласит, что

При использовании этого метода (в отличие от Memcache :: connect () и Memcache :: pconnect ()) сетевое соединение не устанавливается до фактическогонеобходимо.

поэтому нет способа addServer знает, установлено ли сетевое соединение

, использовать http://php.net/memcache.connect вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...