Что такое буферизация вывода?
Что такое буферизация вывода и почему она используется в PHP?
5 ответов:
буферизация вывода для веб-разработчиков, руководство для начинающих:
без буферизации вывода (по умолчанию) ваш 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
Больше Ресурсов:
Как имя предлагает здесь буфер памяти, используемый для управления тем, как выводится скрипт.
вот один очень хороший учебник по теме
ob_start(); // turns on output buffering $foo->bar(); // all output goes only to buffer ob_clean(); // delete the contents of the buffer, but remains buffering active $foo->render(); // output goes to buffer ob_flush(); // send buffer output $none = ob_get_contents(); // buffer content is now an empty string ob_end_clean(); // turn off output buffering
буферы могут быть вложенными, поэтому, пока один буфер активен, другой ob_start() активирует новый буфер. Таким образом, ob_end_flush() и ob_flush() на самом деле не отправляют буфер на выход, а в родительский буфер. И только когда нет родительского буфера, содержимое отправляется в браузер или терминал.
хорошо объяснил здесь:https://phpfashion.com/everything-about-output-buffering-in-php