我有一个连接远程数据库服务器的应用程序。
如果mysql服务器出于某种原因而停止并且之后成功,那么我的应用程序无法快速检测到服务器状态。重新连接到数据库服务器需要将近20秒。所以我的gui冻结了。我不希望gui冻结20秒
到目前为止,我试过
功能
MYSQL_OPT_CONNECT_TIMEOUT
选项
我的环境不是多线程的。所以 如何做更快的检测?
答案 0 :(得分:3)
如果您同步进行网络连接,请准备好冻结。出于这个原因,在单独的线程中进行数据操作是有意义的。
答案 1 :(得分: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
被拒绝的消息几乎是即时的。
答案 2 :(得分:0)
正如其他人已经讨论的那样,我不会谈论使用多个线程或进程。你能在tcp上连接你的mysql服务器吗?在大多数情况下,你会立即收到一个tcp fin来表示一个已关闭的连接,尽管有时甚至可能不是这种情况。但是大多数强大的应用程序都做得很好。
shell> mysql --protocol=TCP
如果服务器不接受它,我相信它可以从配置设置启用。
但是,这并未解决服务器突然脱离网络或客户端连接断开等情况。