我想persit我的MongoDB連接這樣的:持久性和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);
但很明顯,它不工作... 我的目標是避免連接時間對每個請求(〜30毫秒)
這是可行的嗎?這個例子有什麼問題?
該代碼不會抱怨,但它只是返回-1而不是正確的計數。
謝謝你的幫助。
[編輯]刪除else塊和去除mongo_destroy行只是按預期工作\ O/
我建議你寧願使用每個線程連接通過使用__thread關鍵字:** __ thread conn ** = 0;然後** if(!conn){setup(); }這樣你將會更好地使用MongoDB功能。 – Gil
某處有樣品? – solisoft
查看隨G-WAN下載提供的mysql.c示例。它做同樣的工作,不會混淆你 – Gil