ob_get_level () начинается с уровня 1 - PullRequest
7 голосов
/ 04 сентября 2010

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

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

1 Ответ

8 голосов
/ 04 сентября 2010

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

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

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

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

...