4

可能重复:
如何停止影响整个 PHP 代码的 PHP sleep()?
PHP:在睡眠()之前和之后输出数据?

我在 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
}

但是,当我打开另一个浏览器并尝试打开另一个页面(再次本地主机)时,它甚至没有打开。当我关闭第一个窗口并在一段时间后尝试打开第二个 URL 时,它正在工作。

我认为这显然与睡眠有关。有没有办法在不阻塞所有其他请求的情况下调用 sleep() 或间隔输出数据?

我在这里要做的是,在满足条件之前不要让循环完成。

4

1 回答 1

3

看起来它只是等待 PHP 脚本结束(满足基于数据库更改的某些条件)我不会这样做,而是使用 XHR 请求(或酷孩子喜欢称之为 AJAX)来自客户时不时。

这可以防止用户等待状态更改(解除阻塞)并防止 PHP 被阻塞。

只需让 AJAX 每 5 秒运行一次,以检查后端的状态,看看它是否已更改。

于 2012-08-26T12:47:22.087 回答