我目前正在使用ajax调用来启动mysql的大进程!在此过程中,我在数据库中保存了一个百分比值。
在这个Ajax调用PHP脚本之后,我开始另一个调用另一个从数据库中读取该值的php脚本的ajax调用。
所有来电都是异步的!
问题......第二次ajax调用似乎是在第一次完成之后开始的。
function Get815(){
$('#Pgbar').window('open');
$('#p').progressbar('setValue', 0);
getStatus();
myVar= setInterval('getStatus()', 3000);
startProcess();
}
function getStatus() {
$.ajax(
{
type: 'GET',
url: "lib/get_percent.php",
async: true,
success:
function (jdatos) {
data = eval('('+jdatos+')');
if(data[0]['result']===true){
if(data[0]['data']<parseInt('100')){
$('#p').progressbar('setValue', data[0]['data']);
return true;
}
}else{
alert('dio false');
};
}
});
}
function startProcess() {
$.ajax(
{
type: 'GET',
url: "815/815.php",
async: true,
success: function(jdatos) {
data = eval('('+jdatos+')');
if(data[0]['result']===true){
alert('Finished');
}else{
alert('Error');
}
}
});
}
这是Big Process Script的一部分 .. .. 记录器('计数器'。$ nPercent。'nCounter'。$ nCounter。'nTotal'。$ nTotal);
$stmt = $db->stmt_init();
$stmt->prepare("update `percent` set value=?");
if($stmt===false){ logger('SQL Prepare Error');}
$rc=$stmt->bind_param('s', $nPercent );
if($rc===false){ logger('SQL Bind Error');}
if($stmt->execute()==false){ logger('SQL Execute Error ' . $stmt->error); };
$stmt->close();
..
..
..
$db->close();
$aReturn[]= array('result'=>true );
exit(json_encode($aReturn));
记录器功能保存到日志数据库......以这种方式我可以实时看到在此过程中是否正在进行。
现在是get_percent.php的一部分
..
..
$cSelectNodes="select value from percent";
if(!$result1 = $db->query($cSelectNodes))
{
debug('There was an error running the query [' . $db->error . ']');
$aReturn[]= array('result'=>false );
exit(json_encode($aReturn));
}
while($row = $result1->fetch_assoc()) {
$nPercent="";
$nPercent=$row['value'];
}
$result1->close();
$db->close();
$aReturn[]= array('result'=>true , 'data'=> $nPercent);
exit(json_encode($aReturn));
在815.php完成之后,进度条会被反映,但最后一个百分比来自数据库。
有谁知道为什么会这样?
亲切的问候,