我在每分钟运行的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)
我不知道最近是否有任何更新或更改,我付费从网络托管公司托管。
答案 0 :(得分:2)
&#34;服务器已经消失了#34;是客户端与服务器断开连接时MySql返回的错误。 在您的情况下,当互联网连接可能不稳定时会发生这种情况
否则尝试增加超时时间:
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);