【发布时间】:2021-07-05 12:51:03
【问题描述】:
我尝试使用 Laravel 队列延迟每个通知(或作业)。尽管如此,不是通知一个接一个地延迟,而是一次将延迟应用于所有通知。但是,延迟只应用于第一个通知,其余的作为第一条消息同时发送出去。请问,这个社区中的任何人都可以帮助我吗?
这是仅获取录取被接受或拒绝的申请人然后单独通知他们的方法的一部分。不幸的是,我们使用的邮件服务器每 1 分钟最多只能发送 30 封电子邮件;因此,我需要使用排队来限制每 2 秒仅发送(不超过)1 封电子邮件。
foreach ($applications as $application)
{
$application_id = $application->id;
$admission = Admission::where('application_id', $application_id)->first();
if (empty($admission->admission_no) & $application->status === 5) {
$this->generateAdmissionNumber($application->id, $application->course_id);
$application->update(['done' => 1]);
$admissions = Admission::where('course_id', '=', $id)->get();
foreach ($admissions as $admission) {
$admission->update(['done' => 1]);
}
}
$application->done = 1;
$application->update();
$user = $application->users;
if ($user->notify_if_decision_is_made === 1)
{
$user->notify((new DecisionNotification($user))
->delay(Carbon::now()->addSeconds(2)));
}
}
我关注了guides,但仍然没有解决方案。我在这里查看了许多解决方案,但没有看到像这样的任何问题。
我在我的 .env 文件中设置了QUEUE_CONNECTION=database,在 DecisionNotification 文件中添加了shouldQueue,然后从终端运行php artisan queue:work 来执行作业。感谢您的帮助。
【问题讨论】:
标签: laravel