dis*_*Guy 4 php timeout phpmailer
$mailer = new SMTP;
$mailer->Timeout = 5;
$mailer->connect($host, $port)
Run Code Online (Sandbox Code Playgroud)
这应该会在 5 秒后取消 connect(),但超时时间要长得多,并且不会在 5 秒后取消。
如何强制我的脚本在 5 秒后停止尝试连接到 SMTP?
我期待您的答复。
此致,
心烦意乱的家伙
PHPMailer 的 SMTP 类中有两个超时 -Timeout和Timelimit。
Timeout在建立初始 TCP 连接时适用。Timelimit是每个 SMTP 命令响应所允许的持续时间。两者都默认为 5 分钟(根据 RFC) - 因此可能您连接速度很快,但服务器响应命令的速度非常慢。您应该尝试将其设置Timelimit为较低的值,如下所示:
$mail->getSMTPInstance()->Timelimit = 5;
Run Code Online (Sandbox Code Playgroud)
所有这些都应该提醒您,SMTP 并不是一种交互式即时协议,因此您应该只使用 SMTP 发送到可以正确排队您的请求的附近服务器。