lw1
@lw1
Пью пуэр.

Как решить: Выдает ошибку при отправке почты Laravel send в цикле foreach?

Добрый день!

Для отправки сообщений на почту использую Mailgun, сайт сделан на Laravel 4.2
Мне нужно отправить нескольким адресатам одно письмо, но через некоторое время сайт выдает ошибку 504 Gateway Time-out.

foreach($users_email as $u_email){
			$data['c_email'] = $u_email;
			Mail::send('emails.subscribes-everyweek', $data, function($message) use ($u_email, $subject)
			{
				$message->from('noreplay@website.com', 'Godevment - курсы, тренниги и бесплатное обучение :)');
			    $message->to($u_email->email)->subject($subject);    
			});
			sleep(1);
		}


Подскажите, как решить данную проблему?
  • Вопрос задан
  • 562 просмотра
Пригласить эксперта
Ответы на вопрос 2
Keyon
@Keyon
fullstack developer
Посмотрите в сторону Queues. У вас видимо много пользователей, которым вы пытаетесь отправить письмо, и логично что сервер возвращает ошибку 504. Попробуйте еще увеличить параметр max_execution_time
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Вы после каждого письма заставляете скрипт ждать 1 секунду. Если писем, например, 60 и таймаут в nginx минута, клиенту в итоге отдается ответ, что таймаут исчерпан. Это логично.
Правильно - отправлять письма в фоновой задаче.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы