PHP mail()函数导致页面加载缓慢

时间:2011-08-22 17:04:47

标签: php sendmail

我一直在编写一些涉及使用mail()的PHP页面。在大多数情况下,它运作良好。但是,偶尔(我会说大约10-20%的时间),mail()函数会导致页面加载异常缓慢,如果有的话。

我无法在论坛上找到类似的问题。重申一下,mail()函数工作正常并发送邮件,但是当调用带有mail()函数的脚本时,它偶尔会导致页面加载时间变慢。

以下是页面的重要部分。为了记录,我们正在使用Microsoft Exchange Server 2007。

<html>
  <head>
    <?php
      if ($_POST['submit'] == 'submit'){
        //execute some php code.
        mail($to, $subj, $body, $headers, "O DeliveryMode=b");
      }
      ?>
        <meta http-equiv="refresh" content="0">
      <?php
    }
  </head>

  <body>
    <form action=<?php echo $_SERVER['PHP-SELF']?>>
      <!--Form Data-->
      <input type='submit' name='submit' value='submit'/>
    </form>
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点:使用ajax,或将emais放入队列并运行cron来运行脚本以异步方式发送它们。

答案 1 :(得分:0)

正如johndavidjohn所指出的那样,缓慢是由与邮件服务器的通信引起的。在发送电子邮件并关闭连接之前,页面将无法完成加载。

我建议将消息​​保存在数据库中,然后使用cronjob从数据库中提取消息并发送电子邮件。这将卸载将电子邮件发送到后台进程的工作。

如果您无法运行cronjob,则可以使用PostmarkSendgridAmazon SES等邮件投放服务获得更好的响应时间。