phpmailer花了5秒..但是php mail()花费不到1秒

时间:2014-11-06 03:09:27

标签: php phpmailer

我正在尝试发送大量电子邮件,我正在使用phpmailer类发送电子邮件,他们每次发送时间为5.2秒!这是我的代码,任何想法为什么花了这么长时间?

<?php

//============

        require '../includes/PHPMailer-master/PHPMailerAutoload.php';

        $time_start = microtime(true);


//Create a new PHPMailer instance
$mail = new PHPMailer;
//Set who the message is to be sent from
$mail->setFrom('support@site.com', 'site');
$mail->CharSet = 'UTF-8';
//Set an alternative reply-to address
$mail->addReplyTo('support@site.com', 'site');
//Set who the message is to be sent to
$mail->addAddress('email@gmail.com', 'Name');
//Set the subject line
$mail->Subject = 'subject ';
$mail->msgHTML('test');
//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}





            $time_end = microtime(true);
    $time = $time_end - $time_start;
    echo "Process Time 3: {$time} <br/>";
    // Process Time: 1.0000340938568



?>

2 个答案:

答案 0 :(得分:0)

为了更准确地了解正在发生的事情,请使用分析器 - 它会立即显示出时间的变化。我推荐xdebug和qcachegrind,或PHPStorm。

您经常会发现SMTP到localhost的速度比您预期的要快 - 当您使用postfix调用sendmail时,sendmail二进制文件无论如何都会建立到localhost的SMTP连接,因此您可以直接使用SMTP来减少开销。有关详细信息,请参阅postfix文档。

msgHTML()执行您可能不需要的各种操作 - 直接设置BodyAltBody会更快。

正如其他人所提到的,如果你想发送数量,大部分开销可以(并且应该)移出发送循环之外,你可以从keepalive这样的东西中获益。

确保您使用的是最新的PHPMailer - 在最近的版本中有一些相当大的加速,特别是在SMTP中。

答案 1 :(得分:0)

$mail->IsSMTP();

将其更改为:

$mail->IsMail();  // set mailer to use Mail