在一个while循环中回显不实时显示数据.显示仅在结束时发生

use*_*784 0 php

我有这个简单的代码

 echo "start<br>";

 while($row = $stmt->fetch())
 { 
    // code
    echo "inside while<br>";
 }

  echo "done";
Run Code Online (Sandbox Code Playgroud)

该页面不会实时回显我的内部,一旦完成处理整个数据,它就会同时输出所有的回声.我希望看到内部的回声,一个接一个地发生. ..

谢谢

Roc*_*mat 5

这就是PHP默认工作的方式.它会缓冲输出,并且在页面完成之前不会将其发送到您的浏览器.

有一种方法可以解决它.您关闭所有输出缓冲,flush每次都告诉PHP 数据echo.

我在这里找到了一个解决方案:http://manzzup.blogspot.com/2013/11/real-time-updating-of-php-output-using.html

执行此操作的代码是:

// Turn off output buffering
ini_set('output_buffering', 'off');
// Turn off PHP output compression
ini_set('zlib.output_compression', false);

//Flush (send) the output buffer and turn off output buffering
while(@ob_end_flush());

// Implicitly flush the buffer(s)
ini_set('implicit_flush', true);
ob_implicit_flush(true);

// Needed to force browsers to actually display data
echo str_pad("",1024," ");
echo "<br />";
Run Code Online (Sandbox Code Playgroud)

将其添加到页面顶部.然后,当循环运行时,您的数据将显示在页面上.