ob get level () начинается с уровня 1

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

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

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

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

Ура.

1 ответов


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

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

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

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