Замедление работы почты PHP вешает страницу - PullRequest
0 голосов
/ 29 марта 2012

У меня странная проблема с почтой. В частности, у меня есть скрипт, который проверяет заголовок запроса, и, если он соответствует определенной строке, он отправляет письмо с использованием mail(). Это обычная почта со стандартными полями 'to', 'subject', 'content', 'from' и ничего больше.

Почта отправляется нормально, но это приводит к зависанию загрузки страницы на 30+ секунд (даже если mail() вне сгенерированного HTML), что слишком долго. Я видел некоторые ответы, в которых предлагалось сбросить почту в базу данных и запустить на ней задание cron, но в этой ситуации это не вариант.

По сути, мне интересно, есть ли способ принудительно завершить сценарий php (загрузку страницы) без завершения mail() или некоторую конфигурацию, которую я должен проверить, что может привести к тому, что это займет так много времени.

Ответы [ 3 ]

0 голосов
/ 29 марта 2012

Никогда не было проблем с mail(), я нахожу это очень надежным.

  • Проблема возникает во всех электронных письмах или с определенными?
  • Вы пытались проверить код на другом сервере?
  • Использовать PHPmailer() с здесь как альтернатива (если возможно) с SMTP. Здесь хороший урок.


0 голосов
/ 24 ноября 2014

Когда у меня возникла похожая проблема, это было вызвано отсутствием канонического имени хоста.

Посмотрите на /var/log/mail.err: если вы видите

sendmail [31575]: невозможно указать собственное доменное имя (localhost) - используется короткое имя "

тогда это все!

Тогда вам нужно:

  1. Добавьте ваше имя хоста к /etc/hosts как: your.ip.address your.host.name
  2. Установить имя хоста в /etc/hostname как: your.host.name
  3. Reboot
0 голосов
/ 29 марта 2012

Однажды у меня была похожая проблема на сервере RHEL 4, и я нашел два решения, которые работали: использование почты PEAR или использование внешнего сервера smtp (в моем случае - gmail). Время отправки простой контактной формы увеличилось с 30 до 50 секунд до менее секунды.

Я так и не выяснил, чем это вызвано ...

...