我目前正在尝试获取PHP循环状态并更新HTML5进度条。循环由按钮单击触发,并在每次执行后设置为 5000,1 秒 sleep()。当然,我也提出了一个 Ajax 请求,每秒重新显示当前循环号并更新进度条。但是,请求总是等到循环完成,并向我显示一个数字,例如"1234567891011..."
这是我的JQuery代码,非常简单,因为它仅用于测试和学习目的
function getStatus() {
$.ajax({
url : 'ajax.php',
dataType: "html",
type: "POST",
data: {request: 'request',},
success: function( data ) {
//Call function to update status on the loading bar
updateBar(data);
}
});
//Update loading bar
function updateBar(data) {
$('progress').attr('value', data);
}
}
function setGo() {
$.ajax({
url : 'ajax.php',
dataType: "html",
type: "POST",
//async: false,
data: {status: 'GO',},
success: function( data ) {}
});
}
$('#start').click(function(event) {
setGo();
setInterval(function() {
getStatus();
}, 1000);
});
这是我的 php 代码
<?php
//Overwrite php execution limit
set_time_limit(120);
if($_POST['status'] = 'GO') {
$number = 5000;
$counter = 0;
for($i=0; $i != $number; $i++) {
$counter++;
sleep(1);
if(isset($_POST['request'])) {
echo $counter;
}
}
}
?>
我尝试了很多不同的方法,阅读了很多帖子,但不知何故,没有任何效果。希望有人有想法。
仔细看看你的 PHP 脚本中的"echo $counter;"部分,这是一个(5000 次)循环。
在解释和执行PHP代码后,Web服务器将结果输出发送到其客户端,通常以生成网页的一部分的形式 - 例如,PHP代码可以生成网页的HTML代码
来自PHP的维基页面
这基本上意味着在返回输出之前将始终执行整个 php 文件。在返回输出之前,循环将执行 5000 次。