gpt4 book ai didi

php - 如何正确延迟 laravel 中的每 100 封邮件

转载 作者:行者123 更新时间:2023-12-02 16:52:14 24 4
gpt4 key购买 nike

如果我有 1000 封电子邮件,我运行的作业会检查这 1000 封电子邮件并发送电子邮件。

我可以:

$users = User::all();
$count = 0;
$hours = 0;
foreach($users as $user) {
if($count % 100 === 0) {
$hours++;
}
Main::to($user->email)->later(now()->addHours($hours), new MyEmail($user));
$count++;
}

我还没有测试这个,但我想每小时发送 100 封电子邮件,这是正确的方法吗?

最佳答案

sleep(1); 在这里无济于事,您的解决方案没问题,请记住前 100 个将延迟一个小时。 Laravel Docs

另外,正如您所说,MailTrap 只允许在几秒钟内发送 2 封电子邮件,您可以为每个 100 添加几小时 + 几秒,这样每封电子邮件都在 100 batch从1到100会延迟1小时+秒;

或者另一种解决方案在 queue:work 中使用 --sleep=3 参数,这将处理 1 封电子邮件休眠 3 秒等。

这将在(Redis/数据库)中创建一个队列,具体取决于您使用的是什么,并将在指定的日期时间处理它们。

$users = User::all();
$count = 0;
$hours = 0;

foreach($users as $user) {

if($count % 100 === 0) {
$hours++;
}

Mail::to($user)->later(now()->addHours($hours), new MyEmail($user));
$count++;

}

关于php - 如何正确延迟 laravel 中的每 100 封邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58087330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com