可能的重复:
如何阻止 PHP sleep() 影响我的整个 PHP 代码?
PHP:在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
}
Run Code Online (Sandbox Code Playgroud)
但是,当我打开另一个浏览器并尝试打开另一个页面(再次本地主机)时,它甚至没有打开。当我关闭第一个窗口并在一段时间后尝试打开第二个 URL 时,它正在工作。
我认为这显然与睡眠有关。有没有办法定期调用 sleep() 或输出数据,而不阻塞所有其他请求?
我在这里想做的是,在满足条件之前不要让循环结束。
从表面上看,只是等待 PHP 脚本结束(满足基于数据库更改的某些条件),我不会这样做,而是使用 XHR 请求(或酷孩子们喜欢称之为的 AJAX)客户时不时地。
这可以防止用户等待状态改变(解除阻塞)并防止 PHP 的阻塞。
只需让 AJAX 每 5 秒运行一次,以检查后端的状态,看看它是否已更改。
| 归档时间: |
|
| 查看次数: |
7967 次 |
| 最近记录: |