ob_get_flush
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
ob_get_flush — Сброс буфера вывода, возвращая его содержимое и отключение буферизации вывода
Описание
ob_get_flush() сбрасывает буфер вывода, возвращая его содержимое в виде строки и отключает буферизацию вывода.
Буфер вывода должен запускаться функцией ob_start() с флагом PHP_OUTPUT_HANDLER_FLUSHABLE. Иначе не сработает ob_get_flush().
Замечание: Эта функция аналогична ob_end_flush() за исключением того, что эта функция возвращает буфер в виде строки.
Возвращаемые значения
Возвращает буфер вывода или FALSE
если буферизация не активна.
Примеры
Пример #1 Пример использования функции ob_get_flush()
<?php
//Используется output_buffering=On
print_r(ob_list_handlers());
//сохраняет буфер в файл
$buffer = ob_get_flush();
file_put_contents('buffer.txt', $buffer);
print_r(ob_list_handlers());
?>
Результат выполнения данного примера:
Array ( [0] => default output handler ) Array ( )
Смотрите также
- ob_end_clean() - Очищает (стирает) буфер вывода и отключает буферизацию вывода
- ob_end_flush() - Сброс (отправка) буфера вывода и отключение буферизации вывода
- ob_list_handlers() - Список всех используемых обработчиков вывода
Коментарии
Correction to previous post: ob_get_clean() is better, ie:
<?php
// start generating html
$html = '<html><head>'; // etc
// start output buffering
ob_start();
// call function which outputs immediately
print_menu();
// append this to $html and empty buffer
$html .= ob_get_clean();
?>
Hi,
this is just to add a behavior that I haven't understud at first place.
ob_get_flush actually returns the content of the buffer as a text but also it sends the buffer back to the browser so that it's displayed on user screen.
Use ob_get_clean if you do not want the buffer to be send to the user
I don't know how exactly this works, but if you call this function, PHP would behave as if headers have been sent (even though the output has gone to a string).
This means that you can't call this function, and then call setcookie for example.
This was verified by trial and error