Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么PHP脚本在等待;“完成脚本”;在任何回音/输出之前?_Php_Echo - Fatal编程技术网

为什么PHP脚本在等待;“完成脚本”;在任何回音/输出之前?

为什么PHP脚本在等待;“完成脚本”;在任何回音/输出之前?,php,echo,Php,Echo,考虑一个简单的脚本 <?php echo "hi"; foreach ($_GET['arr'] as $a) { echo $a ."<br>"; } echo "<p>Masel tov</p>"; foreach ($_GET['arr2'] as $a) { echo $a ."<br>"; } 根据您的配置,输出将被缓存直到完成。您可以使用ob\u flush()或flush()强制刷新。可悲的是,许多现代浏览器在页面加载完

考虑一个简单的脚本

<?php 
echo "hi";
foreach ($_GET['arr'] as $a)
{
 echo $a ."<br>";
}
echo "<p>Masel tov</p>";
foreach ($_GET['arr2'] as $a)
{
 echo $a ."<br>";
}

根据您的配置,输出将被缓存直到完成。您可以使用
ob\u flush()
flush()
强制刷新。可悲的是,许多现代浏览器在页面加载完成之前都不会更新,无论刷新的频率有多高

  • 冲洗
  • 冲水
PHP输出缓冲的配置设置。

正如您所注意到的,PHP一次发送所有数据(脚本完成的那一刻)-您可以搜索以下内容:


有一个函数可用于在每次输出调用后启用/禁用自动刷新。但是在使用PHP手册之前,请先查看一下它的注释。

如果要逐个显示项目,并保持与每个服务器设置一起工作的干净代码,则可以考虑使用Ajax。我不喜欢刷新缓冲区,除非没有其他选项来完成任务

如果你的项目不是一个Web项目,你可以考虑在PHP控制台(命令行)中运行你的代码来接收即时输出。

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();
if(ob\u get\u level()==0)
{
ob_start();
} 

对于($i=1;$i),这里是如何立即回音-
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();