我一直在编写一些涉及使用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>
答案 0 :(得分:0)
有几种方法可以做到这一点:使用ajax,或将emais放入队列并运行cron来运行脚本以异步方式发送它们。
答案 1 :(得分:0)
正如johndavidjohn所指出的那样,缓慢是由与邮件服务器的通信引起的。在发送电子邮件并关闭连接之前,页面将无法完成加载。
我建议将消息保存在数据库中,然后使用cronjob从数据库中提取消息并发送电子邮件。这将卸载将电子邮件发送到后台进程的工作。
如果您无法运行cronjob,则可以使用Postmark,Sendgrid或Amazon SES等邮件投放服务获得更好的响应时间。