gpt4 book ai didi

php - MySQL 服务器已经消失 - ErrorException

转载 作者:行者123 更新时间:2023-11-29 01:30:09 24 4
gpt4 key购买 nike

尝试在超时的连接上查询数据库时,我开始遇到此错误。

Fatal error: Uncaught exception 'ErrorException' with message 'mysql_query(): MySQL server has gone away'

所以我做了很多研究,论坛上 99% 的用户都说你可以使用 mysql_ping 命令来检查连接,所以我把它放在这里:

if(!mysql_ping($this->sDBLink))
Connect(true);

现在我得到同样的错误,只是引用了 mysql_ping 函数而不是 mysql_query 函数:

Fatal error: Uncaught exception 'ErrorException' with message 'mysql_ping(): MySQL server has gone away'

如何可靠地检查连接是否仍然存在?mysql_ping 抛出异常。

最佳答案

为什么连接超时?因为它的闲置时间超过了特定的阈值。这种东西对于各种网络应用来说都是必须的,才能让它们具有弹性。如果用户在连接到 MySQL 服务器时突然关闭客户端机器怎么办?服务器需要能够在一段时间后断开客户端连接。

这种东西是网络编程中固有的。这是一项功能,而不是错误。

对此你能做什么?

你可以切换到一个更现代的 mysql 连接管理库来处理这些东西。

特别是如果您的客户端软件不经常使用,您可以重新组织您的软件以连接到 MySQL、使用连接和断开连接。这样你就不需要持久连接。但如果您的客户端服务器被大量使用,那是不切实际的;建立连接有很多开销。

您可以更改超时值。看这里。 how to change timeout for mysql persistent connections

您可以定期使用连接。 mysql_ping 使用连接而不实际做任何服务器工作。类似 SELECT 1 的查询也是如此。如果您每分钟左右 ping 一次连接,那么两分钟的超时不会导致您的 MySQL 服务器断定您的客户端已经离开并断开连接。

您可以通过尝试重新建立连接而不是仅仅通过错误消息来破坏您的程序来正确处理您获得的 ErrorException。使用像这样的 PHP 代码:

try {
some operation on the mysql connection.
}
catch (ErrorException $ex) {
disconnect mysql
connect mysql
}

关于php - MySQL 服务器已经消失 - ErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com