Буферизация вывода в броузер

Задача
Необходимо начать генерацию вывода раньше, чем закончится пересылка заголовков или cookies.

Решение
Вызовите функцию ob_start() в начале вашей страницы и функцию ob_end_flush() в конце страницы. Кроме того, можно поменять местами команды, генерирующие код, и команды, посылающие заголовки.

Выходная информация не будет послана до тех пор, пока не будет вызвана функция ob_end_flush():


I haven't decided if I want to send a cookie yet.

Yes, sending that cookie was the right decision.


Обсуждение
Можно передать функции ob_start() имя функции обратного вызова (callback), чтобы она обработала буфер вывода. Это полезно для повторной обработки всего содержимого страницы, например чтобы скрыть адреса электронной почты от автоматов, отыскивающих адреса:

function mangle_email($s) {
return preg_replace('/([^@\s]+)@([-a-z0-9]+\.)+[a-z]{2,}/is',
'<$1@...>',
$s);
}
ob_start('mangle_email');
?>
I would not like spam sent to ronald@example.com!


Функция mangle_email() преобразует вывод в:
I would not like spam sent to !

Параметр конфигурации output_buffering включает буферизацию вывода для всех страниц:
output_buffering = On

Точно так же параметр output_handler устанавливает функцию обратного вызова для обработки буфера вывода, которая будет использована на всех страницах:

output_handler=mangle_email

Установка параметра output_handler автоматически устанавливает параметр output_buffering в on..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Аутентификация, основанная на cookies
Взаимодействие в рамках Apache
Идентификация различных броузеров
Настройка обработки ошибок
Отслеживание сеанса работы с сайтом

Вернуться в раздел: PHP / 8. Основы Web