У меня есть собственный PHP-скрипт для отправки информационного бюллетеня. Он отлично работал. Недавно мой хостинг-провайдер указывает мне квоту на уважение: 30 писем/минуту. Таким образом, между каждой отправкой почты я вставляю sleep(2);
.PHP-скрипт перестает работать с 503 недоступным сервисом
С этого изменения, через 5 минут (300 секунд), сценарий остановки и возвращения:
Service Unavailable
Сервер временно не в состоянии обслуживать ваш запрос из-за простоя обслуживания или проблемы пропускной способности , Пожалуйста, повторите попытку позже. Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 503 Service Unavailable.
Четыре наблюдения.
В начале моего сценария, я ставлю эти две линии:
ignore_user_abort(true); set_time_limit(0);
Таким образом, проблема исходит не от переменной max_execution_time (я проверяю: она действительно изменяется).
Сценарий работает правильно на
localhost
, где переменные PHP ini более ограничены, чем на моем веб-хосте. Таким образом, проблема возникает не из переменнойmemory_limit
.Я думал, что это может быть ограничение переменной времени Apache Timeout (300). Но мой провайдер является скептически настроен об этом ...
Сервер работает на PHP 5.5.
Что может быть причиной этого?
Сценарий раньше (он работает с PHPMailer):
// all email addresses
while ($row = $result->fetch_array())
{
// ...
if ($mail->send())
{
echo "success : " . $row["mail"] . "<br/>";
}
else
{
echo "error : " . $row["mail"] . " - " . $mail->ErrorInfo . "<br/>";
}
}
После:
// all email addresses
while ($row = $result->fetch_array())
{
...
if ($mail->send())
{
echo "success : " . $row["mail"] . "<br/>";
}
else
{
echo "error : " . $row["mail"] . " - " . $mail->ErrorInfo . "<br/>";
}
sleep(2);
}
Вы могли бы включить * скрипт, который не работает ...? мы еще не совсем ясновидящие. –
Я улучшил форматирование вашего вопроса, чтобы было легче читать. Пожалуйста, просмотрите документацию по форматированию Stack Overflow в [справочном центре] (https://stackoverflow.com/help/formatting), чтобы вы могли сделать это самостоятельно в следующий раз. Обратите внимание, что в блоках кода внутри списка должны быть отступы четыре пробела для каждого уровня списка плюс дополнительные четыре пробела для указания блока кода. – Chris