在我们的ajax调用中,我们尝试从数据库中选择一些值,这些值需要存储到我们在脚本运行时创建的一个临时表中,然后我们尝试执行一些操作,结果将通过json格式传递给Ajax调用脚本。对于第一个ajax呼叫需要15秒。那么第二次它需要19秒。我不知道为什么它比第一次Ajax呼叫需要更多4秒。我认为这是缓冲区大小问题然后我使用 CCleaner 软件清理了我的系统它只需要14秒。为了做到这一点,我们在ajax调用中也使用 ob_flush(); flush(); 函数和 cache:false 。它也在做同样的事情。但仍需要19秒。你能否告诉我错误是什么或需要做什么?我的意思是需要调用哪个php函数来做同样的事情?
这个ajax电话
var form = $('#chart_form');
var formdata = false;
if(window.FormData){
formdata = new FormData(form[0]);
}
var formAction = form.attr('action');
$.ajax({
url: 'process.php',
type: 'POST',
cache : false,
data : formdata ? formdata : form.serialize(),
contentType : false,
processData : false,
dataType: "json",
timeout : 10000000,
beforeSend: function () {
$('#wait').html('<span style="position: fixed;left: 50%;top: 50%; transform: translate(-50%, -50%); color:#3C8DBC "><img src="images/waiting.gif" alt="loading" width="200" height="200" style="padding-left:85px"><br /><br /><span style=" font-weight: 700; font-size: 18px">Please wait,Chart is being Generated</span></span>');
$('#wait').css({display: "block" });
$('#message').css({display: "block" });
},
success: function(data)
{
//do operation
}
complete: function(r) {
//alert(r.responseText);
$('#message').css({display: "none" });
$("#wait").css({display: "none" });
$(window).scrollTop(200);
}
});
在ajax页面中,表有300万个数据。我们正在选择11,000个数据。
<?php
ob_flush();
flush();
$client=trim($_POST['client']);
$ip=trim($_POST['IP']);
$port=trim($_POST['port']);
$var=trim($_POST['variable']);
$start=trim($_POST['start']);
$end=trim($_POST['end']);
$new_start = date("Y-m-d H:i", strtotime($start));
$new_end = date("Y-m-d H:i", strtotime($end));
$t=time();
$character='2346789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$total_no_char=strlen($character)-1;
$final_char=mt_rand(0,$total_no_char);
for($i=0;$i<3;$i++)
{
$string .= $character[mt_rand(0,$total_no_char)];
}
$table_name=$t.'_'.$string.'_list';
$create_table="
CREATE TABLE $table_name (status varchar(100),moddate datetime,
INDEX mod_index (moddate)) SELECT `status`,`moddate`
FROM `globstats_graph`
WHERE Cname='$client' AND IP='$ip'
AND Port='$port' AND Variable='$var' AND status REGEXP '^[0-9]+$|^ON$'
AND moddate between '$new_start' and '$new_end'";
mysql_query($create_table);
?>
之后我们在临时表中进行一些操作。并以json格式传递响应。在json格式中,我传递两个array.each数组有90个值