我有一个大函数(1300 多行代码),它从网络获取数据并将其插入本地数据库。每次该函数运行大约需要 20 秒才能完成,我需要运行该函数一百万次,因此我使用 set_time_limit(0) 将 PHP 时间限制设置为无限,然后循环该函数一百万次,例如这个:
for ($ID= '01'; $ID < '999999'; $ID++) {
getDataFromWeb($conn, $ID);
}
那么问题出在哪里呢?问题是有一百万个地方可能会出错,而且总是会出错,例如,代码突然卡在 ID 23465 中,它只是停止获取数据,但我没有收到任何类型的错误,它就像循环继续但没有向数据库插入任何内容一样,并且由于我为 PHP 设置了“无时间限制”,因此它永远不会停止。
我想知道如何检测此类问题、停止所有问题并显示警报。如果我在函数开始之前设置时间,然后在函数结束时检查它,如下所示:
for ($ID= '01'; $ID < '999999'; $ID++) {
$time_start = microtime();
getDataFromWeb($conn, $ID);
$time_end = microtime();
if ($time_alert - //... somehow check how time does it takes and stop if its taking too much
}
它不会工作,因为如果函数永远不会完成,那么 $time_end 将永远不会被设置等等......
那么,请帮忙?
最佳答案
关于PHP:当循环很长的函数没有响应时退出并显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245743/