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


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


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

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

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

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


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

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

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

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

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

PHP. Эффективность и отладка. Часть Седьмая.


11-07-2015

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).

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



<< Предыдущая статьяСледующая статья >>
PHP. Эффективность и отладка. Часть Шестая. PHP. Эффективность и отладка. Часть Восьмая.