MySQL 服务器已消失 - 与预期情况相差 60 秒
本文讨论了导致 MySQL 服务器在执行持续 120 秒的查询时经过 60 秒后超时并引发错误的问题。尽管查询运行正常,但 PHP 脚本中的一个问题导致了这个错误。
问题症状
系统配置
分析
检查 SHOW VARIABLES 输出后,发现 wait_timeout 已设置为 28800(480 分钟),但错误仍然存在。这表明 wait_timeout 不是问题所在。
解决方案
问题的原因是 PHP 选项 mysql.connect_timeout。此选项不仅用于连接超时,还用于等待来自服务器的第一个响应。由于查询持续时间设定为 120 秒,而 mysql.connect_timeout 默认设置为 60 秒,因此服务器在 60 秒后关闭连接,导致错误。
通过将 mysql.connect_timeout 增加到至少 120 秒,解决了此问题。这通过以下代码实现:
ini_set('mysql.connect_timeout', 300); ini_set('default_socket_timeout', 300);
这将 mysql.connect_timeout 增加到 300 秒,避免了在等待服务器响应时 premature 地关闭连接。
以上是为什么我的 MySQL 查询在 60 秒后超时,尽管'wait_timeout”要高得多?的详细内容。更多信息请关注PHP中文网其他相关文章!