考虑一个简单的脚本
<?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分钟也会回显。
是否有防止这种情况发生的设置或为什么会这样?
答案 0 :(得分:5)
根据您的配置,输出将缓存到完成。您可以使用ob_flush()
或flush()
强制进行同花。遗憾的是,许多现代浏览器在页面加载完成之前也不会更新,无论你多久刷新一次。
PHP输出缓冲的配置设置。 http://www.php.net/manual/en/outcontrol.configuration.php
答案 1 :(得分:2)
有一个函数ob_implicit_flush可用于在每次输出调用后启用/禁用自动刷新。但在使用它之前,请查看PHP手册的注释。
答案 2 :(得分:1)
如果要逐个显示项目并保留适用于每个服务器设置的干净代码,您可以考虑使用ajax。我不喜欢刷新缓冲区,除非没有其他选项来完成任务。
如果您的项目不是webproject,您可以考虑在php控制台(命令行)中运行代码以立即接收输出。
答案 3 :(得分:0)
对此进行确认
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();
答案 4 :(得分:-1)
<?php
ob_start();
echo "Hello ";
$out1 = ob_get_contents();
echo "World";
$out2 = ob_get_contents();
ob_end_clean();
var_dump($out1, $out2);
?>