現在、mysql.h を使用して MYSQL データベースに接続する C++ クライアント アプリケーションがあり、切断が発生した場合に備えていくつかのロジックを実行する必要があります。クライアントが切断された状況で、これが MYSQL データベースに再接続する最良の方法かどうか疑問に思っています。
bool MYSQL::Reconnect(const char *host, const char *user, const char *passwd, const char *db)
{
bool out = false;
pid_t command_pid = fork();
if (command_pid == 0)
{
while(1)
{
sleep(1);
if (mysql_real_connect(&m_mysql, host, user, passwd, db, 0, NULL, 0) == NULL )
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&m_mysql));
}
else
{
m_connected = true;
out = true;
break;
}
}
exit(0);
}
if (command_pid < 0)
fprintf(stderr, "Could not fork process[reconnect]: %s\n", mysql_error(&m_mysql));
return out;
}
現在、すべてのパラメーターを取り込んでフォークを実行しています。子プロセスは、sleep() ステートメントを使用して毎秒再接続を試みます。これはこれを行う良い方法ですか?ありがとう