PHP очищает все уровни буферизации вывода

Я пытаюсь реализовать простой класс 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();

Это перебор?


person efritz    schedule 25.09.2011    source источник
comment
Помните, что если ваша конфигурация php ini для output_buffering = On вызовет бесконечный цикл.   -  person marcio    schedule 24.07.2013


Ответы (1)


Вам не нужны ob_flush() и ob_end_flush(). Достаточно вашего цикла while.

Вы также должны посмотреть: http://us.php.net/manual/en/function.ob-implicit-flush.php

Ваша потребность в flush() после ob_end_flush() зависит от того, как вы настроили эту функцию.

person Ariel    schedule 25.09.2011