Wednesday, March 9, 2011

mysql で永続接続するか、毎回 connect するか

mysql で永続接続するか、毎回 connect するかの stack overflow リンク集 mysql_ping だけなら結構速いので、ping に失敗した時に close して connect し直せば良い。 以下のようなコードで良さそう。
bool MysqlUtil::init(const char *host, const char *user, const char *pass, const char *dbname){
  if( _isInit ){
    if(0 == mysql_ping(_mysql) ){
      return true;
    }
    mysql_close(_mysql);
  }

  _mysql = mysql_init(NULL);
  if( !mysql_real_connect(_mysql, host, user, pass, dbname, 0, NULL, 0) ){
    fprintf(stderr, "ERROR:mysql_real_connect()\n");
    return false;
  }
  if( 0 != mysql_set_character_set(_mysql, "utf8") ){
    fprintf(stderr, "ERROR:mysql_set_character_set()\n");
    return false;
  }

  _isInit = true;
  return true;
}
mysql 側の設定