PHP 刷新所有级别的输出缓冲

efr*_*itz 5 php output-buffering

我正在尝试实现一个简单的 Http Response 类,该类实现 Http Streaming (或 Chunked-Encoding)。为了实现这一点,我需要output_buffering = Off在 php.ini 中进行设置,并以一定的时间间隔刷新输出。

PHP 自动很好地完成了这项工作——除了实际的刷新机制。我已经让它工作了,但我不确定它是否太过分了。我想知道如何立即刷新每个级别的输出缓冲,而不调用十亿个函数(我不确定哪些函数在哪些环境/哪些场景中是多余的)。

    while (ob_get_level())
    {
        ob_end_flush();
    }

    // print the buffer

    flush();
    ob_flush();
Run Code Online (Sandbox Code Playgroud)

这是否太过分了?

Ari*_*iel 4

你不需要ob_flush()ob_end_flush()。你的 while 循环就足够了。

您还应该查看:http://us.php.net/manual/en/function.ob-implicit-flush.php

flush()您对after的需求ob_end_flush()取决于您如何设置此功能。