ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Спонсор статьи: Pfi-701 http://www.ink-donor.spb.ru.

PHP. Браузер ввода-вывода. Часть Четвёртая.


28-12-2009

8.4. Буферизация вывода
Команды буферизации вывода дополнительно к буферизации Web-сервера добавляют свой уровень буферизации под управлением PHP. Это может привести к незначительному снижению производительности, но такова цена за дополнительное управление.
При вызове функции ob_start весь вывод таких функций, как print и echo, задерживается в буфере, который представляет собой большую область памяти. Содержимое буфера можно переслать в браузер с помощью функции ob_end_flush или удалить его с помощью функции ob_end_clean. Как говорилось в главе 7, "Операции ввода-вывода и доступ к диску", заголовки не могут отправляться после того, как была отправлена первая часть содержимого. Поэтому эти функции позволяют избегать ошибок, которые возникают из-за отправки заголовков после содержимого.
ob_clean()
Эта функция удаляет содержимое буфера вывода, не прекращая буферизацию вывода. Новое поступающее содержимое опять будет накапливаться в буфере.
ob_end_clean()
Функция ob_end_clean завершает буферизацию вывода и удаляет содержимое из буфера. В браузер не отсылается ничего. 
ob_end_flush()
Функция ob_end_flush завершает буферизацию вывода и отправляет содержимое буфера в браузер.
ob_flush()
Функция ob_flush отправляет содержимое буфера в браузер и очищает буфер. string ob_get_clean()
Функция ob_get_clean возвращает содержимое буфера в браузер и очищает буфер. Аналогичного результата можно добиться путем вызова функции ob_getcontents и последующего вызова функции ob_clean.
string ob_get_flush()
Функция ob_get_flush возвращает содержимое буфера, отправляет его в браузер и очищает буфер. Аналогичного результата можно добиться с помощью вызова функции ob_getcontents и последующего вызова функции ob_flush.
string ob_get_contents()
Функция ob_get_contents возвращает содержимое буфера вывода. integer ob_get_length()
Эта функция возвращает количество байтов в буфере вывода.
integer ob_get_level()
Функция ob_get_level возвращает уровень вложения буфера вывода. Каждый вызов ob_start начинается с буфера вывода, вложенного во внешний буфер вывода. Вне любого вызова функции ob_start эта функция возвращает 1.
array ob_get_status(boolean full)
Функция ob_get_status возвращает массив, описывающий текущий статус буфе­ризации вывода. По умолчанию он возвращает ассоциативный массив со следующими элементами: level, type, status, name, del. Если для аргумента full задано значение TRUE, возвращаемым значением является массив, проиндексированный по уровню вложения. На момент написания этой книги данная функция находилась на стадии эксперимента.
ob_gzhandler(string buffer, integer mode)
Функция ob_gzhandler возвращает заданный буфер после его обработки с помощью алгоритма gzip. Подразумевается, что она должна использоваться в качестве дескриптора функции ob_start.
ob_iconv_handler(string buffer, integer mode)
Функция ob_iconv_handler преобразует текст из внутренней кодировки символов во внешнюю. Подразумевается, что она должна использоваться в качестве дескриптора функции ob_start. Этот дескриптор появляется благодаря использованию расширения iconv. С помощью функции iconv_set_encoding можно задать кодировку, которую использует дескриптор. Узнать текущую кодировку можно посредством функции iconv_get_encoding. С помощью функции iconv можно закодировать отдельные строки.
ob_implicit_flush(boolean on)
Функция ob_implicit_flush вызывает сброс буфера после любой команды, создающей вывод.
array ob_list_handlers()
Функция ob_list_handlers возвращает массив имеющихся дескрипторов. ob_start(string callback)
Функция ob_start (листинг 8.6) включает режим буферизации вывода. В этом буфере сохраняется весь текст, отправленный функцией print и аналогичными функциями. Он не будет отправлен в браузер до тех пор, пока не будет вызвана функция ob_end_flush. Кроме того, по завершении работы сценария сбрасывается весь буфер.
Необязательный аргумент callback позволяет пропустить весь вывод через поль­зовательскую функцию. Эта функция должна принимать и возвращать строку.

Листинг 8.6. Функция obstart

<?php
//начать буферизацию вывода ob_start();
?>
<html> <head>
<title>ob_start</title>
</head>
<body>
<?php
print("Начиная с этого места ");
print(strlen(ob_get_contents()));
print(" символы размещаются в буфере .<br>n"),-
?>
</body> </html> <?php
// добавить проверочный заголовок header("X-note: COREPHP"); // сбросить содержимое ob_end_flush();
?>

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Браузер ввода-вывода. Часть Третья. PHP. Браузер ввода-вывода. Часть Пятая.