$mailer = new SMTP;
$mailer->Timeout = 5;
$mailer->connect($host, $port)
Это должно отменить функцию connect () через 5 секунд, но тайм-аут занимает гораздо больше времени и не отменяется через 5 секунд.
Как заставить мой скрипт прекратить попытки подключения к SMTP через 5 секунд?
Я с нетерпением жду ваших ответов.
С наилучшими пожеланиями,
distractedGuy
В классе SMTP PHPMailer есть два таймаута — Timeout
а также Timelimit
,
Timeout
применяется при установлении начального TCP-соединения. Timelimit
продолжительность, разрешенная для ответа каждой команды SMTP. Оба значения по умолчанию равны 5 минутам (в соответствии с RFC), поэтому может случиться так, что вы подключаетесь быстро, но тогда сервер очень медленно реагирует на команды. Вы должны попробовать установить Timelimit
к более низкому значению, как это:
$mail->getSMTPInstance()->Timelimit = 5;
Все это должно служить напоминанием о том, что SMTP не предназначен для использования в качестве интерактивного непосредственного протокола, поэтому следует использовать SMTP только с ближайшим сервером, который может правильно поставить в очередь ваш запрос.
Других решений пока нет …