Это ситуация :
У меня есть приложение Laravel 4 с Iron mq для ускорения процесса. Можно заказать автомобиль и зарегистрироваться на сайте. В обоих случаях отправляется почта. Проблема в том, что после установки 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 секунд. Это означает, что железо работает. Хотя странно, что я сделал Queue :: marshall () только для одного из почтовых маршрутов, и он работает для всех трех. Регистрация пользователя также выполняется быстрее, без какой-либо очереди :: marshall () Но дело в том, что в обоих случаях не отправляется электронное письмо.
Это код отправки почты :
return \Mail::queue($this->view, $this->data, function($message) use($self) { $message->to($self->email, $self->to)->subject($self->subject); });
С Mail :: send работает (но очень медленно), а Mail :: queue быстрее, но письмо не отправляется.
Основные вопросы :
Почему почта не отправляется? Настройки SMTP не должны меняться, не так ли?
Какое место для Queue :: marshall ()? Если для POST регистрации я должен вызвать правильный метод Route :: post ('register', 'HomeController @ postRegister'); Затем, где мне нужно поставить Queue :: marshall ()? Можно сделать двойной маршрут? Вызвать метод и сделать Queue :: marshall?
Большое спасибо! Уже для предыдущего сайта были те же проблемы и никогда не разрешались.
Цель этого вызова маршала состоит в том, чтобы заставить ваше приложение обрабатывать ваши задания в очереди. Итак, создайте отдельный маршрут для вашего маршала, он будет использоваться только Iron:
Route::post('queues/marshal', function() { return Queue::marshal(); });
Тогда вам просто нужно подписаться на ваш адрес маршала в вашей железной очереди:
http://yoursite.com/queues/marshal