如何解决使用Ajax在具有偏移量和限制而没有异步的多个块中调用PHP脚本:false
我有一个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 举报,一经查实,本站将立刻删除。