可能重复:
How can I stop PHP sleep() affecting my whole PHP code?
PHP: Output data before and after sleep()?
我在localhost中有一个php代码,它回显了数据并在两者之间休眠。在客户端,我能够及时看到收到的数据,并且我也可以进行渲染。
$condition = true;
while($condition) {
$data = get_some_data(); // may not fetch new data to be sent, each iteration.
echo $data;
ob_flush();
$i++;
sleep(1);
$condition = run_some_logic(); //could become false depending on DB value
}
但是,当我打开另一个浏览器并尝试打开另一个页面(localhost再次)时,它甚至都没有打开。当我关闭第一个窗口并在一段时间后尝试打开第二个URL时,它正在工作。
我认为这显然与睡眠有关。有没有办法间隔调用sleep()或输出数据,而不会阻止所有其他请求?
我在这里要做的是,在条件满足之前不要让循环结束。
答案 0 :(得分:2)
看起来它只是等待PHP脚本结束(满足基于数据库更改的某些条件)我不会这样做,而是使用XHR请求(或AJAX作为酷孩子喜欢调用it)不时地从客户那里。
这可以防止用户等待状态更改(解除阻塞)并阻止阻止PHP。
简单地让AJAX运行5秒用后端检查状态是否已经改变。