【问题标题】:Flush not working冲洗不工作
【发布时间】:2016-05-16 16:05:54
【问题描述】:

我正在尝试使用下面的代码显示实时 php 进程输出,但它不起作用,它不会实时显示进程,它只会一次显示最终输出

echo "Start...";

for ($i = 0; $i<20; $i++){
    echo $i;
    ob_flush();
    flush();
    sleep(1);
 }

echo "Done!";
ob_end_flush();
exit;

【问题讨论】:

标签: php flush


【解决方案1】:

同花顺在PHP 一侧。但是,一些网络服务器有自己的输出缓存。


例如IIS 具有ResponseBufferLimit 选项。

%windir%\system32\inetsrv\appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"

【讨论】:

    【解决方案2】:

    现在大多数浏览器在拥有所有初始 DOM 内容(不包括图像等单独资源)之前不会显示页面,除非页面非常大。我认为这是为了确保在显示任何内容之前都存在所有 css 规则。 Heres what the manual says

    【讨论】:

      【解决方案3】:

      你的问题不清楚。我以为你是直接运行 PHP 的。 如果您通过浏览器运行 PHP,这是行不通的。 PHP 通过浏览器将运行整个程序,然后服务器页面。它没有任何更新 HTML 的工具。 您通常使用 ajax 来执行此操作。

      我假设你的代码 sn-p 实际上看起来像这样:

      <!DOCTYPE html>
      <html>
      <body>
      
      <?php
         echo "My first PHP script!";
      ?>
      
      </body>
      </html> 
      

      如果您想在 PHP 中执行此操作,您必须弄清楚如何直接运行它。试试https://stackoverflow.com/a/9520125/5276890

      【讨论】:

        猜你喜欢
        • 2013-03-04
        • 1970-01-01
        • 2012-06-17
        • 2018-06-24
        • 2012-06-19
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2016-04-07
        相关资源
        最近更新 更多