Ajax请求耗时太长

时间:2014-12-18 18:35:30

标签: php jquery ajax

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发送的非常简单的脚本和数据只是输入字段值。

由于

1 个答案:

答案 0 :(得分:3)

mail()功能最有可能是你的慢。发送邮件通常需要很长时间,即使邮件不是很大。要确认这一点,请尝试评论您的mail(...),然后执行echo "done"。然后看看它现在是否超级快。

根据您的服务器,mail()可能是本地输出到sendmail的输入,或者它可能是连接到SMTP服务器。

我建议您尝试使用PHPMailer,它允许您明确指定SMTP或sendmail,或使用内置的mail()函数。 (PHPMailer还会处理MIME标头和许多其他有用的东西。)

然后,您可以进行速度测试以查看哪个SMTP或sendmail更快,然后选择更快的速度。如果您被限制使用SMTP,那么PHPMailer允许您指定一些更快的服务器来发送。