MySQL服务器已经消失(PHP)

Nat*_*ael 3 php mysql ini

所以,我收到以下错误:

Error Number: 2006
MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)

我几乎可以保证这是因为脚本运行需要几十分钟,然后在脚本中间运行更多查询.考虑到这是一个仅限管理员的巨大文件编写脚本,这是可以预期的.(并且完全可以接受)我认为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);
Run Code Online (Sandbox Code Playgroud)

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

Uno*_*nos 7

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

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

谢谢@diolemo和@galador.

  • 这会引入太多开销.您应该检查连接是否仍然可以在可能已经消失的位置处可用.如果你连续有10个快速查询,那么它不可能在那段时间内消失.但是如果你在文件传输上等待5分钟,那么预计会重新连接. (2认同)