2016-04-30 15 views
0

我正在使用手动访问队列使用事件监听器的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,请在30secs之后发送欢迎邮件。

谢谢。

更新的代码:

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

为什么你想发送电子邮件_specifically_ 30秒后? –

+0

是的。但使用'$ this-release'而不是'Mail :: later' @MartinBean – ssuhat

回答

1

release方法不会终止功能,它只是推动工作回到ň秒到队列中,则与该处理器的其余部分继续。试试这个:

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

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

+0

嗨,我在我的终端看到它处理队列。但它不会发布电子邮件。 – ssuhat

+0

回应'企图'的值。从我如何阅读文档,应该从0开始,每次尝试增加1次。 – Josh

+0

'企图'是1.功能输入到其他人而不是如果语句 – ssuhat