ob получить уровень() начинается с уровня 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() в разных точках, поскольку я избегаю укладки слишком большого количества буферов, поскольку я прочитал, что это может повысить производительность. Я просто не уверен, что мне следует здесь делать.

Ваше здоровье.

Author: Jason Lewis, 2010-09-04

1 answers

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

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

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

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

 7
Author: Piskvor, 2010-09-04 09:25:13