如何减少C代码中的MySQL连接超时

时间:2017-01-09 14:29:55

标签: mysql c timeout

我正在测试一些mysql集成到我的C代码。我注意到如果mydomain.com在二进制运行时不可用,它会被卡住超过2分钟。我想避免这种情况,并设置最多5秒的超时。我怎么能这样做?

#include <my_global.h>
#include <mysql.h>

int main() {

    MYSQL *con = mysql_init(NULL);

    if (con == NULL) {
        fprintf(stderr, "%s\n", "debug: could not initialize database");
        exit(1);
    }

    if (mysql_real_connect(con, "mydomain.com", "testuser", 
            "testuserpwd", "db_test", 0, NULL, 0) == NULL) {
        exit(1);
    }
    ...
    mysql_close(con);

}

1 个答案:

答案 0 :(得分:0)

这里代码按照需要运行。如果服务器不可用,则timout现在是5秒i.s.o. 2分钟。

感谢您的帮助!

#include <my_global.h>
#include <mysql.h>

int main() {

    MYSQL *con = mysql_init(NULL);
    unsigned int mysql_ct;

    mysql_ct = 5;

    if (con == NULL) {
        fprintf(stderr, "%s\n", "debug: could not initialize database");
        exit(1);
    }

    if (mysql_options(mysql_con, MYSQL_OPT_CONNECT_TIMEOUT, &mysql_ct)) {
        fprintf(stderr, "debug (mysql): [mysql_options] failed.");
    }

    if (mysql_real_connect(con, "mydomain.com", "testuser", 
            "testuserpwd", "db_test", 0, NULL, 0) == NULL) {
        exit(1);
    }
    ...
    mysql_close(con);

}