Отправить асинхронное письмо с phpmailer - PullRequest
9 голосов
/ 18 февраля 2012

Можно ли отправлять асинхронные электронные письма с помощью phpmailer?

Фрагмент кода обычной отправки почты выглядит следующим образом:

$mail->Send();

PHP ожидает отправки ()вернуть результат, прежде чем двигаться дальше.Можно ли заставить phpmailer мгновенно возвращать результат, не дожидаясь завершения процедуры отправки реальной электронной почты.

Ответы [ 2 ]

8 голосов
/ 13 ноября 2012

Обновление май 2016

Как упомянуто пользователем @ Sinak Salek PHP поддерживает многопоточность.Он доступен с использованием расширения pthreads .

Оригинал

PHP изначально не поддерживает многопоточность (что необходимо сделать красиво).Вы можете сделать это, сохранив электронные письма в базе данных, а затем обработайте их позже, используя другой скрипт (например, с помощью задания cron).Таким образом, вам не нужно ждать базовой структуры электронной почты.

Другое дело, что если phpmailer работает медленно, это может быть связано с неправильной настройкой почтовой программы (sendmail, postfix и т. Д.).

0 голосов
/ 07 сентября 2014

Если вы работаете в Linux, вы можете поместить свой php-скрипт в команду exec и запустить его в фоновом режиме (поставьте & в конце команды) и в тихом режиме (2> & 1> / dev / null)

...