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

PHP mail()函数导致页面加载缓慢,php,sendmail,Php,Sendmail,我已经编写了许多涉及使用mail()的PHP页面。在大多数情况下,它运行良好。然而,有时(我会说大约有10-20%的时间),mail()函数会导致页面加载异常缓慢(如果有的话) 我还没有在论坛上找到类似的问题。重申一下,mail()函数可以正常工作并发送邮件,但是当调用包含mail()函数的脚本时,它偶尔会导致页面加载时间变慢 以下是页面外观的重要部分。为了记录在案,我们使用的是MicrosoftExchangeServer2007 <html> <head>

我已经编写了许多涉及使用mail()的PHP页面。在大多数情况下,它运行良好。然而,有时(我会说大约有10-20%的时间),mail()函数会导致页面加载异常缓慢(如果有的话)

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

以下是页面外观的重要部分。为了记录在案,我们使用的是MicrosoftExchangeServer2007

<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>

>

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

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

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


如果您不能运行cronjob,您可能可以使用邮件传递服务(如,或)获得更好的响应时间。

我也考虑过实现队列并使用cron,但有一个deliberymode参数可以让邮件排队。。。