问题1:使用了ob_start(),未调用ob_end_flush()或flush(),仍然输出<?php
ob_start();
echo "this is test string a<br />";
echo "this is test string b<br />";
?>浏览器仍然输出两个测试测字符串。问题2:无法再现ob的经典示例,每隔1秒输出1个字符<?php
for ($i=10; $i>0; $i--)
{
echo $i;
ob_flush();
flush();
sleep(1);
}
?>或者:<?php
ob_end_clean();
for ($i=10; $i>0; $i--)
{
echo $i;
flush();
sleep(1);
}
?>或者:<?php
ob_start();
for($i=0; $i<300; $++)
{
echo " ";
}
for ($i=10; $i>0; $i--)
{
echo $i;
flush();
sleep(1);
}
?>都是等待10秒钟一起输出,而不是每隔1秒输出一次,为什么?
ob_start();
echo "this is test string a<br />";
echo "this is test string b<br />";
?>浏览器仍然输出两个测试测字符串。问题2:无法再现ob的经典示例,每隔1秒输出1个字符<?php
for ($i=10; $i>0; $i--)
{
echo $i;
ob_flush();
flush();
sleep(1);
}
?>或者:<?php
ob_end_clean();
for ($i=10; $i>0; $i--)
{
echo $i;
flush();
sleep(1);
}
?>或者:<?php
ob_start();
for($i=0; $i<300; $++)
{
echo " ";
}
for ($i=10; $i>0; $i--)
{
echo $i;
flush();
sleep(1);
}
?>都是等待10秒钟一起输出,而不是每隔1秒输出一次,为什么?
<?php
for ($i=10; $i>0; $i--)
{
echo "输出内容太短,把输出内容设置长一点,缓存区无法容纳,就自动输出了".$i;
ob_flush();
flush();
sleep(1);
}
?>
绝对输出,虽然没有ob_end什么的,但是你的文件只有这两个语句,在PHP解释器运行后(运行完这个PHP代码后),会自动输出的。
ob_end_flush();
ob_implicit_flush(1);
这2句就行了。