@Decker

Отправка почтового сообщения на PHP в отдельном «потоке». Методы реализации?

Вопрос наверное уже изъезженный не раз и судя по заголовку каждый подумает "ну вот, опять". Но на самом деле он не о том как отправить почтовое сообщение на PHP, можно через mail, можно с использованием phpmailer, способов масса. Вопрос о другом. Допустим у нас есть абстрактная функция send_message(...) внутри которой реализована отправка email тем или иным образом. Как лучше всего сделать ее в отдельном "потоке" (поток не зря взято в кавычки, т.к. PHP не поддерживает многопоточность). Предположим что у нас имеется скрипт вида:

<?php
echo "Begin ... \r\n";
send_message(...);
echo "End ... \r\n";
?>


При выполнении скрипта, например, в случае когда STMP сервер через который происходит отправка недоступен или в случае любых других задержек в выполнении send_message(...) разница во времени между отображением Begin и End будет значительной. Каким образом лучше реализовать отправку, чтобы send_message(...) выполнялась в "фоне" или максимально быстро, не замедляя выполнение основного скрипта? Другими словами хочется чтобы скрипт успешно и максимально быстро завершился, вне зависимости от времени за которое отработает send_message(...).

p.s. Для себя, пока я вижу самым простым вариант - с оптимизацией всех проверок внутри send_message(...) ... т.е. недоступен резольвинг имени SMTP сервера - прерываем выполнение функции, недоступен SMTP - также прерываем отправку и т.п. Акцент делается не на гарантированную отправку сообщения, а на завершение выполнения основного скрипта за фиксированное время.

Предложения / пожелания и т.п. можно вносить в виде идей, без конкретной реализации. Т.е. достаточно направления "куда копать".
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

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