我有一个连接远程数据库服务器的应用程序。
如果 mysql 服务器因某种原因停止并在此之后成功启动,我的应用程序无法快速检测服务器状态。重新连接到数据库服务器大约需要 20 秒。所以我的gui冻结了。我不想让 gui 冻结 20 秒
到目前为止我试过
- mysql_ping
- mysql_real_connect
功能
MYSQL_OPT_RECONNECT
MYSQL_OPT_CONNECT_TIMEOUT
选项
我的环境不是多线程的。那么如何进行更快的检测呢?
如果您同步进行联网,请为冻结做好准备。出于这个原因,在单独的线程中进行数据操作是有意义的。
正如其他人已经讨论过的,我不会谈论使用多个线程或进程。你能在 tcp 上连接到你的 mysql 服务器吗?这样,在大多数情况下,您会立即收到一个 tcp fin 以指示连接已关闭,尽管有时甚至可能并非如此。但是大多数健壮的应用程序都会进行适当的关闭。
shell> mysql --protocol=TCP
如果服务器不接受它,我相信它可以从配置设置中启用。
但是,这并不能解决诸如服务器突然断网或您的客户端连接断开等情况。
您可以尝试 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
被拒绝的消息几乎是即时的。