我在一个长时间运行的php脚本中遇到超时错误。我尝试使用以下代码设置执行时间:
ini_set('max_execution_time', 1200);
此外,我还尝试在apacheconf文件中设置maxexecution_time。但这个问题没有得到解决。仍然有同样的问题。脚本中有一个firebase云消息模块,可以将一些数据推送到android设备。当我对代码的这一部分进行注释时。闸门通道超时错误未显示。但该代码在脚本中很重要,不能进行注释。这可能是什么原因?有人能帮我吗?
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$deviceid=$row["id"];
$regId=$row["regid"];
if($regId != null){
$json = $push->getPush();
$response = $firebase->send($regId, $json);
}
}
}
该脚本实际上在表中插入了太多行,并使用fcm推送数据。如果插入的行数较少,那么它正在工作。
问题似乎与从结果中提取的许多记录有关,请在SQL查询中应用2的限制并检查一次。
IMHO您必须在每次迭代中重置执行时间限制,如下所示:
while($row = $result->fetch_assoc()) {
set_time_limit(1200);
// ...
}
请参阅https://www.php.net/manual/en/function.set-time-limit.php