ob_get_level () начинается с уровня 1

Имеет несколько проблем с буферизацией вывода. В основном, я пытаюсь запустить буферизацию вывода с обратным вызовом ob_gzhandler, но он продолжает говорить мне, используя неподдерживаемый тип сжатия. Все включено, и я считаю, что проблема в том, что запуск ob_get_level () в начале моего скрипта дает уровень 1. php.ini имеет мое значение output_buffering, равное 4096.

Если я запустил что-то вроде:

while(ob_get_level() > 0){ ob_end_clean(); } 

Затем я могу успешно запустить ob_start () с обратным вызовом ob_gzhandler. Но мне интересно, должно ли это быть проблемой. Во время моего сценария я делаю вызовы ob_clean () в разных точках, поскольку я избегаю стекирования слишком большого количества буферов, поскольку я прочитал это, это может увеличить производительность. Я просто не уверен, что я должен здесь делать.

Приветствия.

У вас включена буферизация вывода по умолчанию (см. Документы ) – это в основном означает, что каждый скрипт PHP начинается с ob_start ().

Если вы хотите отключить OB по умолчанию для всех скриптов PHP, в вашем php.ini установите output_buffering = Off .

Если вы хотите отключить OB по умолчанию для этого конкретного скрипта, используйте цикл while – это совершенно правильно.

Что касается ob_clean – вы уверены, что хотите удалить вывод, который находится в вашем буфере? IMO это действительно не нужно, если вы не видите значительных медленных нагрузок страниц. Не беспокойтесь об оптимизации этого (по крайней мере, не сейчас).