我在 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