Функции управления выводом
Функции управления выводом позволяют определять, когда вывод будет отправлен из скрипта. Это можно использовать в различных ситуациях, особенно если вам нужно выслать шапки/headers браузеру, после того как ваш скрипт начал выводить данные. Функции управления выводом не влияют на шапки, высылаемые функциями header() или setcookie(), только на такие функции, как echo(), и на данные между блоками PHP-кода.
Эти функции всегда доступны. Для использования этих функций не требуется проведение установки,
поскольку они являются частью ядра PHP.
Поведение этих функций зависит от установок в php.ini.
Таблица 1. Директивы функций управления выводом
Имя директивы |
Значение по умолчанию |
Примечания |
output_buffering |
"0" |
|
output_handler |
NULL |
Доступна с PHP 4.0.4. |
implicit_flush |
"0" |
|
Краткое разъяснение конфигурационных
директив.
- output_buffering
boolean/integer
Вы можете включить буферизацию вывода для всех файлов, устанавливая эту директиву в 'ON'. Если Вы желаете ограничить размер буфера к некоторому размеру - вы можете использовать максимальное число байт вместо 'ON', как значение для этой директивы (например, output_buffering=4096). С PHP 4.3.5, эта директива всегда выключена в PHP-CLI. - output_handler
string
-
Вы можете переадресовать весь вывод ваших сценариев к HTML. Например, если вы устанавливаете output_handler в
mb_output_handler(), кодировка будет, очевидно, преобразована в указанную кодировку. Установка любого обработчика вывода автоматически включает буферизацию вывода.
Примечание:
Только встроенные функции могут использоваться с этой директивой. Для определяемых пользователем функций (пользовательских функций), используйте ob_start().
- implicit_flush
boolean
-
FALSE по умолчанию. Изменения параметра в TRUE предписывает слою вывода PHP сбрасывать на диск себя автоматически после каждого блока вывода. Это эквивалентно запросу функции PHP
flush() после каждого запроса
print() или echo() и каждого блока HTML.
При использовании PHP в пределах среды сети, включение этой опции влечет за собой уменьшение производительности, и вообще данная опция рекомендуется только для отладки. Эти значения по умолчанию - TRUE при работе под CLI SAPI.
See also ob_implicit_flush().
Данное расширение не определяет никакие типы ресурсов. Данное расширение не определяет никакие константы.
Пример 1. Пример управления выводом
<?php
ob_start(); echo "Hello\n";
setcookie("cookiename", "cookiedata");
ob_end_flush();
?>
|
|
В приведённом примере вывод из echo() будет сохранён в буфере вывода, пока ob_end_flush() не будет вызвана. Тем временем вызов setcookie() успешно сохранил cookie без возникновения ошибки. (Вы не можете нормально отправить заголовки браузеру, после того как данные уже были отправлены.)
Примечание:
При апгрейде с PHP 4.1 (and 4.2) на 4.3 из-за ошибки вы должны устанавливать
implict_flush в OFF в вашем php.ini, иначе функция
ob_start() не будет работать правильно.
|