我在PHP中运行一个foreach循环,执行时间比我的最大执行时间30秒要长。该循环向用户发送单独的电子邮件。
不是每30秒运行cron作业并为记录创建队列,而是使用set_time_limit(30)
在循环中重新启动计数器,这样做是否不道德?
$i = 0; //start count from 0
foreach ($users as $user):
//limit emails sent
if(++$i == 100) break; //ends execution of loop
set_time_limit(30); //restart timeout counter
send_email($user); //send email to user
endforeach;
我是新手,但通过上面的代码,我认为我给每封电子邮件30秒的时间来完成发送,但同时当发送100封电子邮件时就会停止循环,以防脚本无限运行。
更新:set_time_limit(0)
违反了托管 TOS 的规定,我相信重新启动超时计数器也将重新启动脚本,而使用CRON也是一样的。