Что такое буферизация вывода и почему она используется в PHP?
Буферизация вывода для веб-разработчиков, руководство для начинающих :
Без буферизации вывода (по умолчанию) ваш HTML-код отправляется в браузер по частям, поскольку PHP обрабатывает ваш скрипт. С буферизацией вывода ваш HTML хранится в переменной и отправляется в браузер как одна часть в конце вашего скрипта.
Преимущества буферизации вывода для веб-разработчиков
- Включение только буферизации вывода уменьшает время, затрачиваемое на загрузку и визуализацию нашего HTML-кода, поскольку оно не отправляется в браузер по частям, поскольку PHP обрабатывает HTML-код.
- Все причудливые вещи, которые мы можем делать с строками PHP, теперь можем сделать с нашей всей HTML-страницей как одну переменную.
- Если вы когда-либо сталкивались с сообщением «Предупреждение: невозможно изменить информацию заголовка – заголовки, уже отправленные (вывод)» при настройке файлов cookie, вы с удовольствием узнаете, что буферизация вывода – это ваш ответ.
Буферизация вывода используется PHP для повышения производительности и выполнения нескольких трюков.
Вы можете иметь PHP хранить все выходные данные в буфере и выводить все это сразу, улучшая производительность сети.
Вы можете получить доступ к содержимому буфера, не отправляя его обратно в браузер в определенных ситуациях.
Рассмотрим этот пример:
<?php ob_start( ); phpinfo( ); $output = ob_get_clean( ); ?>
Вышеприведенный пример фиксирует вывод в переменной вместо отправки в браузер. output_buffering отключен по умолчанию.
Рассмотрим этот пример:
<?php ob_start( ); echo "Hello World"; if ( $some_error ) { header( "Location: error.php" ); exit( 0 ); } ?>
Функции управления выводом позволяют вам контролировать, когда вывод отправляется из сценария. Это может быть полезно в нескольких разных ситуациях, особенно если вам нужно отправить заголовки в браузер после того, как ваш скрипт начал выводить данные. Функции управления выводом не влияют на заголовки, отправленные с использованием header () или setcookie (), только такие функции, как echo () и данные между блоками кода PHP.
http://php.net/manual/en/book.outcontrol.php
Дополнительные ресурсы:
Буферизация вывода с помощью PHP
Как следует из названия, здесь используется буфер памяти, используемый для управления выходом вывода скрипта.
Вот один очень хороший учебник по теме