PHP邮件()函数导致页面加载速度缓慢
问题描述:
我一直在写一些涉及使用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>
答
这样做有几个选项:使用AJAX,或将emais在队列中,并运行一个cron运行脚本以异步方式发送。
答
正如johndavidjohn指出的那样,缓慢是由与邮件服务器的通信引起的。直到电子邮件发送并关闭连接,页面才会完成加载。
我建议将消息保存在数据库中,然后使用cronjob从数据库中提取消息并发送电子邮件。这将减轻发送电子邮件到后台进程的工作量。
如果您不能运行一个cronjob,你可能能够获得使用邮件传送服务更好的响应时间像Postmark,Sendgrid,或Amazon SES。
我也想过实现一个队列并使用cron,但有deliberymode参数应该工作排队邮件... – Pons