情况:
我有一个安装了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?
非常感谢! 以前的网站已经出现了同样的问题而且从未解决过。
答案 0 :(得分:3)
此编组调用的目的只是让您的应用程序处理您的队列作业。因此,为您的元帅创建一个单独的路线,它将仅由Iron使用:
Route::post('queues/marshal', function()
{
return Queue::marshal();
});
然后你只需要在你的Iron队列中订阅你的marshal url:
http://yoursite.com/queues/marshal