Ajax请求花费太长时间才能回复
Jquery代码:
<script type="text/javascript">
$(document).ready( function() {
$('#contactForm').on('submit', function(e) {
e.preventDefault();
$.ajax({
type:"POST",
url:"<?php echo site_url;?>includes/listContact.php",
data:$("#contactForm input").serialize(),//only input
success: function(response){
$('#thankMsg').show();
$('#hidediv1').hide();
}
});
});
});
</script>
这是ajax代码所要求的页面:
$file3 = file_get_contents('a.txt', true);
$data3=json_decode($file3,true);
$to=$data3['email'];
$subject="*********************";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: <'.$to.'>' . "\r\n";
$message="Hi, <br/><br/>";
$message .="*********************** <br/><br/>";
foreach($_POST as $key => $value){
$message .="<strong>".ucfirst(str_replace('_',' ',$key)).":</strong> $value<br/>";
}
$message .="<br/><br/><strong>Thanks</strong><br/>";
if(mail ("$to", "$subject", "$message", "$headers"))
{
echo "done";
}
else
{
echo "no";
}
花了差不多10-12秒才得到回复?我在这段代码中没有发现任何问题...因为ajax发送的非常简单的脚本和数据只是输入字段值。
由于
答案 0 :(得分:3)
mail()
功能最有可能是你的慢。发送邮件通常需要很长时间,即使邮件不是很大。要确认这一点,请尝试评论您的mail(...)
,然后执行echo "done"
。然后看看它现在是否超级快。
根据您的服务器,mail()可能是本地输出到sendmail的输入,或者它可能是连接到SMTP服务器。
我建议您尝试使用PHPMailer,它允许您明确指定SMTP或sendmail,或使用内置的mail()函数。 (PHPMailer还会处理MIME标头和许多其他有用的东西。)
然后,您可以进行速度测试以查看哪个SMTP或sendmail更快,然后选择更快的速度。如果您被限制使用SMTP,那么PHPMailer允许您指定一些更快的服务器来发送。