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


Что такое буферизация вывода и почему она используется в PHP?

5 175

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

Больше Ресурсов:

буферизация вывода с помощью 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