나는 그런 내 MongoDB를 연결 persit하기 위해 노력하고있어 :지속성 및 MongoDB를
mongo **ptr = (mongo**)get_env(argv, US_VHOST_DATA);
if(!ptr[0]) {
mongo_replica_set_init(conn, "cluster");
mongo_replica_set_add_seed(conn, "mongo1.mongood.com", 27017);
mongo_replica_set_add_seed(conn, "mongo3.mongood.com", 27017);
mongo_replica_set_add_seed(conn, "mongo4.mongood.com", 27017);
mongo_replica_set_add_seed(conn, "mongo5.mongood.com", 27017);
mongo_replica_set_add_seed(conn, "mongo6.mongood.com", 27017);
mongo_replica_set_client(conn);
mongo_cmd_authenticate(conn, "dbname", "dbuser", "dbpass");
ptr[0] = (mongo*)calloc(1, sizeof(conn));
} else {
conn[0] = *ptr[0];
}
int count = 0;
count = mongo_count(ptr[0], "dbname", "coll", NULL);
mongo_destroy(ptr[0]);
xbuf_xcat(reply, "<h3>%d</h3>", count);
그러나 분명히, 그것은 작동하지 않습니다 ... 내 목표는 각 요청에 연결 시간을 방지하는 것입니다 (~ 30ms의)
할 수 있습니까? 이 예에서 무엇이 잘못 되었습니까?
코드는 불평하지 않지만 올바른 카운트 번호 대신 -1을 반환합니다.
도움 주셔서 감사합니다.
[편집] 다른 블록을 제거하고 예상대로 mongo_destroy 라인 그냥 작동 제거 \ O/
__thread 키워드를 사용하여 스레드 당 연결을 사용하는 것이 좋습니다. ** __ thread conn ** = 0; 그런 다음 ** if (! conn) {setup(); } ** 이렇게하면 MongoDB 기능을 더 잘 사용할 수 있습니다. – Gil
어딘가에 샘플이 있습니까? – solisoft
G-WAN 다운로드와 함께 제공되는 mysql.c 예제를 살펴 본다. – Gil