Буферизация вывода — это механизм, который временно накапливает вывод скрипта (HTML, echo, print) в буфере, вместо немедленной отправки клиенту. Это мощный инструмент для управления потоком вывода.
Без буферизации:
echo
, print
или HTML вне <?php
отправляется сразуС буферизацией:
<?php
// Включение буферизации
ob_start();
echo "Это пока не отправлено клиенту";
$content = ob_get_contents(); // Получить содержимое буфера
// Очистить буфер
ob_clean();
echo "Новое содержимое";
// Отправить буфер и выключить буферизацию
ob_end_flush();
ob_start();
include 'template.php';
$html = ob_get_clean();
ob_start();
echo "Привет мир!";
header('X-Custom: Value');
ob_end_flush();
ob_start('ob_gzhandler');
// Весь вывод будет автоматически сжат
ob_start(); // Буфер 1
echo "Уровень 1";
ob_start(); // Буфер 2
echo "Уровень 2";
$level2 = ob_get_clean();
echo $level2;
ob_end_flush();
function callback($buffer) {
// Заменить все яблоки на апельсины
return str_replace('яблоки', 'апельсины', $buffer);
}
ob_start('callback');
echo "Я люблю яблоки";
ob_end_flush(); // Выведет "Я люблю апельсины"
ob_start();
try {
// Код, который может выбросить исключение
echo "Попытка...";
throw new Exception('Ошибка!');
} catch (Exception $e) {
ob_end_clean(); // Очищаем буфер
echo "Произошла ошибка: " . $e->getMessage();
}
; Включение буферизации для всех скриптов
output_buffering = 4096
; Максимальный размер буфера
output_buffering = On
; Уровень вложенности
output_handler =
Смешанные заголовки и вывод:
Большие объемы данных:
output_buffering
или обрабатывать частичноВложенные буферы:
finally
Используйте буферизацию для: