错误消息“;MySQL服务器已经离开了“;当运行UPDATE查询时


Error Message "MySQL server has gone away" when running an UPDATE query

我在每分钟运行一次的cron作业上运行一个php文件,循环持续60秒。在循环开始之前,我使用mysqli连接到数据库。然后我开始循环。第一个查询获取用户列表,然后对第一个查询中的每个列表项进行查询。在完成项目的所有更新后,外部循环在重复之前会休眠3秒。

问题是内部循环的查询总是返回错误"MySQL服务器已经离开"。这是几天前才开始的,经过几周的良好工作,代码没有任何更改。如果我复制了给出错误的确切查询,然后进入phpMyAdmin并将其粘贴到中,它会成功更新,没有任何错误。

外部循环的查询适用于每个循环。

$mysqli = new mysqli($SQL_data["domain"], $SQL_data["user"], $SQL_data["password"], $SQL_data["database"]);
$start_time =  time();
while((time() - $start_time) < 60)
{
    $stream_list = $mysqli->query("SELECT * FROM {$SQL_data[table]} WHERE -- Blah Blah...");
    $number_of_results = $stream_list->num_rows;
    // Operates on each result from the SQL call
    for($i = 1; $i <= $number_of_results; $i++)
    {
        //some if statements and switches
        // The query that returns the error "MySQL server has gone away"
        $mysqli->query("UPDATE {$SQL_data[table]} SET online=1, lastUpdate = CURRENT_TIMESTAMP(), displayName = '$displayName' WHERE username='".$row["username"]."'");
    }// for($i = 1; $i <= $number_of_results; $i++)
}// while((time() - $start_time) < 60)

数据库信息:

  • 服务器:通过UNIX套接字的本地主机

  • 服务器类型:MySQL

  • 服务器版本:5.5.32-ll-lve-MySQL社区服务器(GPL)

我不知道最近是否有任何更新或更改,我从一家网络托管公司支付托管费用。

"server has away"是MySql在客户端与服务器断开连接时返回的错误。在你的情况下,当互联网连接可能不稳定时,就会发生这种情况

否则尝试增加超时:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);