我正在使用事件监听器和手动访问队列的laravel文档。
这是我的代码:
$user = $event->user;
if ($user->first_name == 'User1') {
$this->release(30);
}
$this->mailer->send('emails.user.welcome', ['user' => $user], function ($m) use ($user) {
$m->subject('Thank you for registering at ' . env('APP_NAME'))->to($user->email);
});
问题是电子邮件在30秒之前发送,30秒之后再次发送。我有理解它的问题。
它是否假设在30秒内释放(仅一次)?
更新: 我想要实现的是,如果用户名是user1,则在30秒后发送欢迎邮件。
感谢。
更新代码:
if ($user->first_name == 'Stefen' && $this->attempts() === 0){
var_dump('this will send later');
$this->release(10);
} else{
$this->mailer->send('emails.user.welcome', ['user' => $user], function ($m) use ($user) {
$m->subject('Thank you for registering at ' . env('APP_NAME'))->to($user->email);
});
}
答案 0 :(得分:1)
release
方法不会终止该函数,它只是将作业按 n 秒推入队列,然后继续执行该处理程序的其余部分。试试这个:
if ($user->first_name == 'User1' && $this->attempts() === 1)
{
$this->release(30);
}
else
{
// Mail time.
}