Как ускорить отправку письма при заказе?

При оформлении заказа уходит письмо менеджеру и пользователю, но почему-то это занимает слишком много времени, около 5 сек. Подскажите, в какую сторону смотреть чтоб оптимизировать этот момент
$mail = new Mail($this->config->get('config_mail'));
$mail->setTo($this->config->get('config_email'));
$mail->setFrom('cr@mail.ru');
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->setText($text);
$mail->send();

if ($order_info['email'] && preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $order_info['email'])) {
    $mail->setTo($order_info['email']);
    $mail->setHtml($user_html);
    $mail->send();
}
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 3
@dimuska139
Backend developer
Это надо делать через очередь. То есть человек жмет, грубо говоря, кнопку "отправить письмо", на сервере запускается задача отправки письма, отдается обратно ответ, что письмо будет отправлено, а сама отправка выполняется в фоновом режиме.
Погугли насчет Gearman.
Ответ написан
Комментировать
@vldud
В сторону почтового агента, через который отправляете почту.
Ответ написан
Комментировать
@OnlyMyQuestion
О, joomla) Выше уже верно ответили про очереди. Но, возможно, в вашем варианте хватит fastcgi_finish_request
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы