2012-02-16 4 views
0

주어진 memcached_st*이 memcached 서버에 성공적으로 연결되었는지 쉽게 확인 할 수 있습니까?libmemcached - 연결되어 있는지 확인합니다.

나는 가짜 호스트 이름을 줄 때 memcached_server_add_with_weight을 통해 연결하고 있으며 MEMCACHED_SUCCESS을 반환합니다. 마찬가지로 memcached_server_add_with_weight으로 전화 한 직후 memcached_last_error_errno을 호출하면 MEMCACHED_SUCCESS이됩니다.

답변

0

이 작업을 수행하는 흥미로운 방법 중 하나는 실제 소켓 설명자를 확인하는 것입니다. 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); 
관련 문제