2011-08-22 134 views
0

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

我在任何论坛上都找不到类似的问题。仅仅重申一下,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> 

回答

0

这样做有几个选项:使用AJAX,或将emais在队列中,并运行一个cron运行脚本以异步方式发送。

+0

我也想过实现一个队列并使用cron,但有deliberymode参数应该工作排队邮件... – Pons

0

正如johndavidjohn指出的那样,缓慢是由与邮件服务器的通信引起的。直到电子邮件发送并关闭连接,页面才会完成加载。

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

如果您不能运行一个cronjob,你可能能够获得使用邮件传送服务更好的响应时间像PostmarkSendgrid,或Amazon SES