28.7. Буферизация вывода
Буферизация вывода - это новая возможность, добавленная в PHP 4. Возможность буферизации позволяет PHP направлять вывод из приложений в буфер памяти вместо непосредственной отправки в браузер клиента. А приложения имеют возможность обрабатывать вывод, находящийся в буфере. Это может быть сжатие, преобразование из формата XML в формат HTML и даже изменение вложенных URL. После этого приложение выводит полученные результаты в браузере.
Даже если необходимости в обработке вывода приложений нет, буферизация вывода позволяет улучшить рабочие характеристики Web-узлов, разработанных с помощью PHP, за счет уменьшения количества операций ввода-вывода на инфраструктуре Web-сервера. Обращение к уровню операций ввода-вывода обычно является дорогой операцией. Сбор вывода в один большой блок и выполнение одной операции ввода-вывода пройдет значительно быстрее, чем выполнение операции ввода-вывода при каждом выводе PHP, т.е. при каждом вызове функции print или echo.
Если сценарии PHP выводят HTML-страницы объемом больше 10 Кбайт, выделение памяти под буфер может потребовать больше времени, чем будет сэкономлено за счет уменьшения числа вызова операций ввода-вывода. Как и во многих других случаях, в вычислительной науке лучших характеристик можно добиться за счет баланса между отсутствием буферизации и полной буферизацией. К счастью, уровень буферизации вывода PHP позволяет пользователям добиться такого баланса. Вместо буферизации всего вывода можно задать буферизацию определенными порциями, которая ограничивает количество буферизируемых данных определенным значением и сбрасывает буфер при каждом его переполнении. Оптимальным значением является значение, равное 4 Кбайт. Такое значение существенно уменьшает количество операций ввода-вывода и работает без существенного расхода памяти или накладных расходов на выделение памяти под буфер. Например, если средний размер созданной PHP HTML-страниицы Web-узла составляет 50 Кбайт, PHP осуществляет 500-10000 вызовов операции ввода-вывода. Если размер буфера составляет 4 Кбайт, он выполнит 12-13 вызовов операции ввода-вывода.
Для того чтобы отвести под буфер всего Web-узла 4 Кбайт, задайте в директиве output_buffering значение 4096. Если необходимо задать буферизацию вывода для одного отдельно взятого сценария, воспользуйтесь функцией ob_start. Например, для задания буфера объемом 4 Кбайт, можно воспользоваться функцией ob_start(null, 4096).
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Эффективность и отладка. Часть Седьмая.
11-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Эффективность и отладка. Часть Шестая. | PHP. Эффективность и отладка. Часть Восьмая. |