【问题标题】:libmemcached - checking if I'm connectedlibmemcached - 检查我是否已连接
【发布时间】:2012-02-16 14:53:50
【问题描述】:

是否有一种简单的方法可以检查给定的memcached_st* 是否已成功连接到 memcached 服务器?

我通过memcached_server_add_with_weight 连接,当我给它提供虚假主机名时它返回MEMCACHED_SUCCESS。同样,在调用memcached_server_add_with_weight 之后立即调用memcached_last_error_errno 会得到MEMCACHED_SUCCESS

【问题讨论】:

    标签: memcached libmemcached


    【解决方案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-08-05
      • 1970-01-01
      • 2011-03-22
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      相关资源
      最近更新 更多