问题描述
我有一个PHP脚本,它将大量行插入MysqL数据库。为了防止超时,我分几个部分运行脚本,并使用jQuery ajax从另一个文件中调用它:
var done = false,offset = 0,limit = 100;
while (!done) {
var url = "myscript.PHP?offset=" + offset + "&limit=" + limit;
jQuery.ajax({
url: url,async: false,type: "GET",success: function(response) {
console.log("success");
if (response.processed !== limit) {
done = true;
}
offset += response.processed;
console.log("Updating weekly rankings,users processed: "+offset);
},fail: function(jqXHR,textStatus) {
console.log("fail");
done = true;
}
});
}
还有我所谓的PHP脚本:
$mydb->setQuery("SELECT player FROM players LIMIT ".$limit." OFFSET ".$offset);
$rows = $mydb->loadobjectList();
foreach ($rows as $row) {
//loop through players get some data and insert rows to database
}
$response = array(
'processed' => count($rows),'message' => 'All OK!'
);
header('Content-Type: application/json');
echo json_encode($response);
die;
当async设置为false时,它工作正常,但是当设置为true时,脚本将永远挂起并循环(只是不断地向数据库中无限插入新行)。我也无法通过console.log得到任何提示,因为它没有显示在浏览器控制台中。
由于async:false已弃用,并且在运行时也挂起了浏览器,我真的很感谢另一种方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)