【发布时间】:2012-07-23 02:03:27
【问题描述】:
我正在 php 中运行一个 foreach 循环,它的执行时间比我的最大执行时间 30 秒要长。循环向用户发送单独的电子邮件。
仅使用 set_time_limit(30) 重新启动循环中的计数器而不是每 30 秒运行一次 cron 作业并为记录创建队列是不道德的吗?
$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
【问题讨论】:
-
不道德?不。反对你的主机服务条款?也许吧。
-
你能运行 cronjob 吗?邮件队列?
标签: php performance loops timeout