0

我有一个连接远程数据库服务器的应用程序。

如果 mysql 服务器因某种原因停止并在此之后成功启动,我的应用程序无法快速检测服务器状态。重新连接到数据库服务器大约需要 20 秒。所以我的gui冻结了。我不想让 gui 冻结 20 秒

到目前为止我试过

  • mysql_ping
  • mysql_real_connect

功能

  • MYSQL_OPT_RECONNECT

  • MYSQL_OPT_CONNECT_TIMEOUT

    选项

我的环境不是多线程的。那么如何进行更快的检测呢?

4

3 回答 3

3

如果您同步进行联网,请为冻结做好准备。出于这个原因,在单独的线程中进行数据操作是有意义的。

于 2012-10-10T09:39:41.230 回答
0

正如其他人已经讨论过的,我不会谈论使用多个线程或进程。你能在 tcp 上连接到你的 mysql 服务器吗?这样,在大多数情况下,您会立即收到一个 tcp fin 以指示连接已关闭,尽管有时甚至可能并非如此。但是大多数健壮的应用程序都会进行适当的关闭。

shell> mysql --protocol=TCP

MYSQL如何指定协议

如果服务器不接受它,我相信它可以从配置设置中启用。

但是,这并不能解决诸如服务器突然断网或您的客户端连接断开等情况。

于 2012-10-10T09:58:20.360 回答
0

您可以尝试 telnet 到 mysql 端口(通常是 3306)。如果连接被拒绝,则 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 回答