PHP Flush()无法在Chrome中运行

Kav*_*gan 11 php buffer google-chrome flush

我偶然发现了这个功能,它承诺可以在IE,FF和Chrome上运行.但它在Chrome中不起作用.有工作吗?

function buffer_flush(){

    echo str_pad('', 512);
    echo '<!-- -->';

    if(ob_get_length()){

        @ob_flush();
        @flush();
        @ob_end_flush();

    }

    @ob_start();
}
Run Code Online (Sandbox Code Playgroud)

mee*_*tar 9

以下是我在Chrome 12.0.742.122中使用PHP 5.3.6在while循环中使用flush()的方法:

echo("<html><body>");
while(1) {
  echo(str_pad($my_string_var,2048," "));
  @ob_flush();
  flush();
}
Run Code Online (Sandbox Code Playgroud)

使用较小的str_pad值也可以工作,但第一个输出显示需要更长的时间.如果缺少任何其他行,则不会出现任何内容.

"@"并不是绝对必要的,但它可以防止日志填满"缓冲区中没有任何内容"的注意事项.

当然,如果您有一个预先存在的页面,只需确保<html><body>标签在那里; 我是从头开始写一个页面的.


Kin*_*nch 4

使用flush()/ob_flush()你只将输出发送到浏览器,但它仍然取决于浏览器何时显示它。我认为,chrome 只是等待,直到收到足够的数据来显示“有用”页面,而不是一些片段。

无论如何,一些建议:

  • 避免使用@(特别是如果您不确切知道它的作用)
  • 如果您不打电话ob_end_*(),则无需ob_start()再打电话。其效率低下

    function buffer_flush(){
      echo '<!-- -->'; // ?
    
      ob_flush();
      flush();
    }
    
    Run Code Online (Sandbox Code Playgroud)