0

リモート データベース サーバーに接続するアプリケーションがあります。

mysql サーバーが何らかの理由で停止し、その後正常に起動した場合、アプリケーションはサーバーの状態をすばやく検出できません。データベース サーバーに再接続するのに 20 秒近くかかります。だから私のGUIはフリーズします。20 秒間 GUI フリーズしたくない

これまで試した

  • mysql_ping
  • mysql_real_connect

機能

  • MYSQL_OPT_RECONNECT

  • MYSQL_OPT_CONNECT_TIMEOUT

    オプション

私の環境はマルチスレッドではありません。では、より迅速な検出を行うにはどうすればよいでしょうか。

4

3 に答える 3

3

同期的にネットワークを構築する場合は、フリーズに備えてください。このため、別のスレッドでデータ操作を行うことは理にかなっています。

于 2012-10-10T09:39:41.230 に答える
0

mysql ポート (通常は 3306) に telnet を試すことができます。接続が拒否された場合、mysql はリッスンしていません。

働く。

root@XXXXXX:~# telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
L
5.6.4-m7)#m#_8:W�hP5YBzaXs[MOmysql_native_password

下。

root@XXXXXX:~# telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

拒否されたメッセージはほぼ瞬時に表示されます。

于 2012-10-10T09:36:58.257 に答える
0

他の人が既に説明したように、複数のスレッドまたはプロセスの使用については説明しません。tcp で mysql サーバーに接続できますか? そうすれば、ほとんどのシナリオでは、すぐに tcp fin を受け取り、接続が閉じていることを示しますが、そうでない場合もあります。しかし、ほとんどの堅牢なアプリケーションは適切に終了します。

shell> mysql --protocol=TCP

MYSQL プロトコルの指定方法

サーバーがそれを受け入れない場合は、構成設定から有効にできると思います。

ただし、これは、サーバーが突然ネットワークから切断された、またはクライアントの接続がダウンしたなどのシナリオには対応していません。

于 2012-10-10T09:58:20.360 に答える