0

我正在使用 Laravel 和 SES 发送大约 7k 封电子邮件。因为我有每秒 10 封电子邮件的限制,所以当 Laravel 一次分批发送 10 封电子邮件时,我需要延迟。

控制器

public function queue(){

$invites = Subscriber::all();
$send_at = now();

foreach ($invites as $i => $invite){

    if($i % 10 == 0){
        $send_at = $send_at->addSeconds(1);   
    }

    SendEmailJob::dispatch($invite)->delay($send_at);
}

dd('sent!');
}

和工作

public function handle()
{   
    Mail::to($this->user->email)->send(new InviteMail($this->user));

}

这给了我一个超时错误,但奇怪的是它将所有 7k 电子邮件排队并发送。我只是好奇为什么我得到了错误。

4

2 回答 2

0

将此功能放在控制器功能的开头

set_time_limit() //In seconds

它将增加最大执行时间。

于 2020-11-25T03:44:48.460 回答
0

检查您的 php.ini 文件中的 max_execution_time 值或用于set_time_limit(700);您的function queue()

700 来自 7000 邀请 /10 = 700 段

max_execution_time 默认为 300 段

于 2020-11-25T03:50:01.970 回答