重複の可能性:
PHP sleep() が PHP コード全体に影響を与えるのを止めるにはどうすればよいですか?
PHP: sleep() の前後にデータを出力しますか?
ローカルホストに、データをエコーしてその間にスリープする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 を再度) を開こうとすると、開かれません。最初のウィンドウを閉じて、しばらくしてから 2 番目の URL を開こうとすると、うまくいきます。
これは明らかに睡眠と関係があると思います。他のすべてのリクエストをブロックせずに、sleep() を呼び出したり、間隔を置いてデータを出力したりする方法はありますか?
ここで私がやろうとしているのは、条件が満たされるまでループを終了させないことです。