2

I've migrated to PHP 5.4.11 which works except that it'll give "MySQL server has gone away" errors in long maintenance scripts. PHP 5.3.17 didn't do this.

Do I need to add/remove php.ini or my.cnf directives? Do I need to update my query PHP class script (we're using mysqli extension)?

4

2 回答 2

5

您应该查看MySQL参考手册C.5.2.9. MySQL server has gone away它列出了许多可能发生这种情况的原因。它在页面上提到:

MySQL server has gone away 错误最常见的原因是服务器超时并关闭了连接。

由于您正在运行长时间的维护脚本,我怀疑这就是原因。页面的另一点:

默认情况下,如果没有发生任何事情,服务器会在八小时后关闭连接。您可以通过在启动 mysqld 时设置 wait_timeout 变量来更改时间限制。请参见第 5.1.4 节,“服务器系统变量”。

您可以尝试设置mysqli.reconnect为 1(在您的 php.ini 中),或MYSQLI_OPT_CONNECT_TIMEOUToptions增加。请参阅mysqli 配置。您还应该考虑从 5.3 迁移到 5.4注释。如果不查看您的代码,很难确定问题所在。

于 2013-02-24T11:09:22.637 回答
1

connect_timeout wasn't the issue, I had to modify my query class and add the following:

mysqli_options(MYSQLI_INIT_COMMAND,"SET SESSION wait_timeout=600;");

于 2013-02-25T23:12:45.947 回答