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