0

memcached_st*特定のサーバーが memcached サーバーに正常に接続されているかどうかを確認する簡単な方法はありますか?

経由で接続していますが、偽のホスト名を指定するとmemcached_server_add_with_weight戻ってきます。MEMCACHED_SUCCESS同様に、 への呼び出しmemcached_last_error_errnoの直後に呼び出すと、が返されmemcached_server_add_with_weightますMEMCACHED_SUCCESS

4

1 に答える 1

0

これを行う興味深い方法の 1 つは、実際のソケット記述子をチェックすることです。libmemcached がサーバーに正常に接続された場合、ソケット記述子は正であり、それ以外の場合は -1 です。

std::shared_ptr<memcached_st> es (memcached_create (NULL), [](memcached_st* msp) {memcached_free (msp);});
memcached_server_add_with_weight (es.get(), "server1", 9201, 100);
memcached_server_add (es.get(), "server2", 9201);
memcached_server_add (es.get(), "server3", 9201);
memcached_server_fn serverVisitor = [](const memcached_st *ptr, memcached_server_instance_st server, void *context) {
  if (server->fd < 0) throw std::runtime_error (std::string ("libmemcached connection to ") + server->hostname + " failed!");
  return MEMCACHED_SUCCESS;
};
memcached_server_cursor (es.get(), &serverVisitor, NULL, 1);
于 2012-09-29T22:05:52.553 に答える