3

所以,我收到以下错误:

Error Number: 2006
MySQL server has gone away

我几乎可以保证这是因为脚本需要花费数十亿分钟才能运行,然后在脚本中间运行更多查询。考虑到这是一个仅限管理员使用的大型文件编写脚本,这是意料之中的。(并且完全可以接受)我认为 MySQL 连接正在关闭,因为 PHP / MySQL / 某些东西没有保持打开状态。但是,我一生都无法弄清楚如何阻止这种超时发生!

我的 PHP 脚本顶部有以下内容,但它似乎没有帮助。

ini_set('default_socket_timeout', -1);
ini_set('max_execution_time', -1);
ini_set('memory_limit', -1);
ini_set('mysql.connect_timeout', -1);

知道如何解决这个问题吗?谢谢!

4

1 回答 1

7

我认为一个可行的选择是mysql_connect每次打电话之前mysql_query。这确保在每次查询之前都会有一个实时连接。

但更好的方法是首先检查连接状态,然后在必要时重新连接。mysql_ping对于检查连接状态很有用,因此您可以使用它来检查是否需要重新连接。@galador 的答案中的示例代码。

感谢@diolemo 和@galador。

于 2012-05-17T17:01:23.187 回答