我需要为长时间运行的 PHP 脚本创建进度条,所以我决定将脚本进度写入 json 文件,然后通过 Javascript 读取它。在 Firefox 中一切正常,但如果我将浏览器更改为 Chrome,它将停止工作。控制台窗口中没有错误。当用户启动 PHP 脚本时,Chrome 会停止加载 json 文件,但它会在 PHP 执行开始之前读取此文件。是我的代码有问题还是 Chrome 浏览器的正常行为有问题?
PHP:
$fp = fopen($this->writeFile, "w");
fwrite($fp, json_encode($values));
fclose($fp);
//for safety we will make a copy and let client access the copy.
copy($this->writeFile, $this->readFile);
Javascript:
getProgress();
function getProgress() {
$.ajaxSetup({ cache: false });
$.getJSON("../../../../upload/status.json", function(data) {
var pbvalue = 0;
if(data){
var total = data['total'];
var current = data['current'];
if(total != 0)
pbvalue = Math.floor((current / total) * 100);
$(".progress-bar .indicator").width(pbvalue+"%");
$(".progress-text").text(current+"/"+total);
}
if(pbvalue < 99)
setTimeout("getProgress()", 3000);
});
}
JSON文件:
{"total":"0","current":"0"}
编辑1: 感谢超时提示,但它在Firefox中工作(很好)问题是在我开始PHP执行后Chrome控制台内没有“XHR完成加载”响应(在它应该每3秒加载文件之前)
编辑 2: 这个问题的原因可能是我在用户提交表单后尝试读取这个 JSON 文件。我猜由于某些原因,表单提交后 Chrome 不再允许执行 jQuery $getJSON 函数。任何解决方法将不胜感激。