我想在暂停前后回显一些输出。
这是我的代码:
<?php
class AsyncOperation extends Thread {
public function __construct(){
}
public function run(){
sleep(11);
echo "Running ";
}
}
echo "Its Here";
flush();
$thread = new AsyncOperation();
$thread->start();
?>
这应该显示输出"It Here"。。。。11秒后。。。应显示"正在运行">
但浏览器显示它就像"在这里运行",并在11秒后显示整个字符串。
我不知道为什么会发生这种事。请帮我解决这个问题,我已经在这里呆了两个晚上了。
有解决方案吗??
您需要输出缓冲
我不确定这在所有浏览器上都有效,但这在上完全有效
- 谷歌的Chrome浏览器
- Mozilla FireFox
- Internet Explorer
- Opera
<?php
if (ob_get_level() == 0) ob_start();
class AsyncOperation
{
public function run()
{
for ($i = 0; $i < 10; $i++) {
echo " ";
echo str_pad('', 4096) . "'n";
# Flushing out..........!
ob_flush();
flush();
sleep(1);
}
echo "Running ";
}
}
echo "Its Here<br>";
$thread = new AsyncOperation();
$thread->run();
?>
我在for
循环下用sleep(1)
修改了您的run()
,这与sleep(11)
相同。