phpMailer在给定时间后没有超时

时间:2014-12-10 11:30:07

标签: php timeout phpmailer

$mailer = new SMTP;    
$mailer->Timeout = 5;    
$mailer->connect($host, $port)    

这应该在5秒后取消connect(),但是超时需要更长时间,并且在5秒后不会取消。

如何强制我的脚本在5秒后停止尝试连接到SMTP?

我期待着你的回答。

致以最诚挚的问候,

distractedGuy

1 个答案:

答案 0 :(得分:2)

PHPMailer的SMTP类中有两个超时 - TimeoutTimelimit

在进行初始TCP连接时,

Timeout适用。 Timelimit是每个SMTP命令响应允许的持续时间。默认为5分钟(根据RFC) - 因此可能是您快速连接,但服务器响应命令的速度很慢。您应该尝试将Timelimit设置为较低的值,如下所示:

$mail->getSMTPInstance()->Timelimit = 5;

所有这些都应该用于提醒您SMTP并非旨在成为交互式即时协议,因此您应该只将SMTP用于附近可以正确排队请求的服务器。