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と同様にスクリプトが再起動すると思いました。