Что такое буферизация вывода?

Что такое буферизация вывода и почему она используется в 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

Как следует из названия, здесь используется буфер памяти, используемый для управления выходом вывода скрипта.

Вот один очень хороший учебник по теме