我在每分钟运行一次的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);