2010-05-28 3 views
0

У меня есть сайт, который обрабатывает заказы из приложения Windows. Это работает следующим образом:Иногда большая задержка при использовании PHP mail()

  1. пользователь щелкает «Заказать сейчас» в приложении окна
  2. App загружает файл с POST в PHP скрипт
  3. Сценарий сразу вызывает PHP почты() функции (заказ не хранится в db)

Это прекрасно работает в большинстве случаев. Однако иногда происходит большая задержка (несколько дней). Клиенты звонят, почему продукт еще не доставлен.

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

Задержка, кажется, происходит здесь:

Received: (from @localhost) 
by ---- (8.13.8/8.13.8/Submit) id o4J9lA7M031307; 
Wed, 19 May 2010 11:47:10 +0200 

Я сообщил этому вопросу в разное время на веб-хостинга, на котором размещен мой сайт. Они говорят, что задержка не происходит в их сети (невозможно).

Но они подтверждают, что сообщение электронной почты впервые видно на их почтовом сервере 26 мая, т.е. через 7 дней после того, как почта была составлена. Заказ отмечен меткой времени локального ПК пользователя, который также соответствует 19 мая (так что это не проблема с ПК)

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

Любая идея была такая задержка может быть введена? Может ли быть ошибка в моем PHP-коде, который вызывает это? (Я не могу поверить, что могу ввести цикл из 7 дней в моем PHP-коде)

ответ

1

Вы правы - это не связано с PHP.

Обычно проблемы с медленной почтой связаны с проблемами DNS, но это не проблема.

Всякий раз, когда я настраивал агент обмена сообщениями (MTA), я бы сказал, что он сдавался задолго до истечения 7 дней.

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

Похоже, что MTA настроен только на удаление почты каждые 7 дней (!) Или что-то пошло не так, и для вашей хостинговой компании потребовалось 7 дней.

Они говорят, что задержка не происходит в их сетях

времени, чтобы найти новый хостинг компании.

C.

0

электронной почты просто не очень надежный способ передачи информации, как это.

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

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

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

Возможно, вам придется просмотреть журналы вашего почтового сервера, чтобы узнать, есть ли у них какие-либо проблемы во время отправки сообщения.

+0

Они проверили журналы своего почтового сервера, и почта впервые отображается в их журналах 26 мая (через 7 дней после составления). Они говорят, что больше ничего не может поставить в очередь почту между PHP mail() и этим почтовым сервером - которые ДОЛЖНЫ быть ошибочными –

0

Там также это:

X-Virus-Scanned: by amavisd-new 

Это будет означать, что существует, по крайней мере, еще один шаг после принятия почты первоначально. Сама амавис скорее всего будет передавать почту на ClamAV, Spamassassin и т. д. ... и любой из них может по какой-то причине ввести задержку.

Учитывая номер версии 8.13 на SMTP-сервере веб-сервера, это скорее всего Sendmail. Если у вас есть какой-либо доступ к серверу, проверьте очередь исходящей почты на «mailq», если у вас есть права, или у администраторов есть это для вас. Поскольку задержка происходит где-то внутри сервера, в какой-то момент она должна быть заполнена в ожидающей очереди sendmail, и это также будет связано с причиной задержки.

Смежные вопросы