Laravel事件监听器和手动释放

时间:2016-04-30 09:41:27

标签: laravel

我正在使用事件监听器和手动访问队列的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);
        });
    }

1 个答案:

答案 0 :(得分:1)

release方法不会终止该函数,它只是将作业按 n 秒推入队列,然后继续执行该处理程序的其余部分。试试这个:

    if ($user->first_name == 'User1' && $this->attempts() === 1)
    {
        $this->release(30);
    }
    else
    {
        // Mail time.
    }

更多关于队列:
https://laravel.com/docs/5.1/queues