Laravel 4 + Iron Mq:队列被解雇但邮件未发送

时间:2014-03-06 15:41:09

标签: php email laravel laravel-4 queue

情况

我有一个安装了Iron mq的Laravel 4应用程序,以加快这个过程。 可以预订汽车并在网站上注册。在这两种情况下都会发送邮件。 问题是安装Iron mq后不再发送邮件了。所有其余的都完成了,在数据库中插入数据,但邮件发送没有。 在Iron mq仪表板中,队列经常被接收并且显然被解雇..

这是路线

 /*  CARS  */

Route::get('focus', function()
 {
return View::make('iframe');
 });
Route::post('focus', 'RegistrationsController@booking');


Route::get('sharan', function()
{
return View::make('iframe2');
 });


Route::get('passat', function()
{
return View::make('iframe5');
});

// Route::post('passat', 'RegistrationsController@booking');

 Route::post('passat', function()
 {
return Queue::marshal();    
 });

/*  USER REGISTRATION */

Route::get('register', 'HomeController@getRegister');
Route::post('register', 'HomeController@postRegister');

现在预订汽车的过程更快,从8/9秒到3秒。这意味着Iron正在发挥作用。虽然很奇怪,我只为其中一个后期路线制作了Queue :: marshall(),但它适用于所有三个.. 用户注册也更快,没有任何队列:: marshall() 但重点是,在这两种情况下都不会发送电子邮件。

这是邮件发送代码

 return \Mail::queue($this->view, $this->data, function($message) use($self)
{
   $message->to($self->email, $self->to)->subject($self->subject);

});

使用Mail ::发送它可以工作(但非常慢),Mail :: queue更快但电子邮件没有发送。

主要问题是

为什么不发送邮件? SMTP设置不应该改变,对吧?

Queue :: marshall()的正确位置是什么? 如果对于注册的POST,我必须调用正确的方法      Route :: post('register','HomeController @ postRegister'); 然后,我必须把Queue :: marshall()? 有可能做双程吗?调用方法并使Queue :: marshall?

非常感谢! 以前的网站已经出现了同样的问题而且从未解决过。

1 个答案:

答案 0 :(得分:3)

此编组调用的目的只是让您的应用程序处理您的队列作业。因此,为您的元帅创建一个单独的路线,它将仅由Iron使用:

Route::post('queues/marshal', function()
{
    return Queue::marshal();    
});

然后你只需要在你的Iron队列中订阅你的marshal url:

http://yoursite.com/queues/marshal