运行UPDATE查询时出现错误消息“MySQL服务器已消失”

时间:2014-11-12 09:00:17

标签: php mysqli

我在每分钟运行的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套接字的Localhost

  • 服务器类型:MySQL

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

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

1 个答案:

答案 0 :(得分:2)

&#34;服务器已经消失了#34;是客户端与服务器断开连接时MySql返回的错误。 在您的情况下,当互联网连接可能不稳定时会发生这种情况

否则尝试增加超时时间:

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