Скрипт сломан через 1 мес., Состояние не удалось, PHP - Apache при отправке электронной почты с AWS SES - PullRequest
0 голосов
/ 16 января 2020

Среда (виртуальный хостинг):

Версия Apache 2.4.41

Версия PHP 7.0.1

Версия MySQL 10.0. 38-MariaDB-cll-lve

PHPMailer 6.1.4

Я отправляю электронные письма, используя AWS SNS SMTP через PHPMailer , -все конфигурация хороша, я сделал тесты и работал хорошо (1 или 2 сообщения), поэтому на производстве я отправляю 100 сообщений электронной почты каждые 5 минут (это не спам) но после 1m сценарий нарушается. Я не получаю никаких сообщений об ошибках в журналах и на экране , я только вижу в консоли, что скрипт не работает после 1 м, когда тело пусто. (Изображение ниже)

Image blank

ПРИМЕЧАНИЯ

  1. Если я только отправляю 50 сообщений электронной почты каждый раз, сценарий НЕ ломается.

  2. Если я запускаю следующий сценарий:

for($i = 1; $i < 131; $i++){
  echo $i.'<br>';
  sleep(1);
}

Я получаю:

Ошибка 500 Тайм-аут запроса Этот запрос занимает слишком много времени для обработки, он превышен по времени сервером. Если время не истекло, обратитесь к администратору этого веб-сайта, чтобы увеличить «Время ожидания подключения».

через 2 мес.

У меня есть следующая конфигурация в скрипте
error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set('memory_limit', '-1');
ini_set('max_execution_time', 12000);
ignore_user_abort(TRUE);
ini_set("default_socket_timeout", 6000);
У меня есть следующий код в .htaccess
php_value default_socket_timeout 6000
TimeOut 6000

Я пробовал упомянутые изменения здесь , но не работает.

1 Ответ

0 голосов
/ 17 января 2020

Наконец, после поиска множества вариантов, я нашел решение. Это решение о специальной конфигурации для Litespeed.

Добавлено в .htaccess в root каталоге для всех запросов

RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

Выполнить PHP без тайм-аутов - Litespeed Do c

...