考虑一个简单的脚本
<?php
echo "hi";
foreach ($_GET['arr'] as $a)
{
echo $a ."<br>";
}
echo "<p>Masel tov</p>";
foreach ($_GET['arr2'] as $a)
{
echo $a ."<br>";
}
我希望脚本能持续地回显内容。然而,当脚本完成后,所有的内容都会一次性回显出来。即使是第一个"
hi
"也要等待1分钟后才被回显。是否有设置可以防止这种情况发生,或者为什么会这样呢?
考虑一个简单的脚本
<?php
echo "hi";
foreach ($_GET['arr'] as $a)
{
echo $a ."<br>";
}
echo "<p>Masel tov</p>";
foreach ($_GET['arr2'] as $a)
{
echo $a ."<br>";
}
hi
"也要等待1分钟后才被回显。ob_flush()
或flush()
来强制刷新。不幸的是,许多现代浏览器也不会更新,直到页面加载完成,无论您刷新多少次。
请检查此内容。
if (ob_get_level() == 0)
{
ob_start();
}
for ($i = 1; $i<=10; $i++){
echo "<br> Task {$i} processing ";
ob_flush();
flush();
sleep(1);
}
echo "<br /> All tasks finished";
ob_end_flush();
PHP发送数据时,正如您所注意到的那样,所有数据一次性发送(脚本完成时)- 您可以搜索类似于http://de1.php.net/manual/de/function.ob-get-contents.php这样的内容:
<?php
ob_start();
echo "Hello ";
$out1 = ob_get_contents();
echo "World";
$out2 = ob_get_contents();
ob_end_clean();
var_dump($out1, $out2);
?>