Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

Производительность


Вниманию читателей!

Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий.

С предыдущими выпусками Вы можете ознакомиться:

  1. в архиве рассылки (оригиналы выпусков);
  2. на сайте рассылки (исправленные и дополненные версии).

# # #

Вы также можете подписаться на рассылку "PHP 5 для начинающих".

PHP 6 уже в разработке!

Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки.

http://pterodactyl.l2p.net/e107/

[опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)]

PHP 5: Новые возможности.

Производительность приложения является одной из главных целей при его разработке, особенно, если на будущем сайте ожидается высокая посещаемость. Заботиться о производительности следует уже на этапе разработки приложения. Чему же следует уделить внимание?

Сессионные переменные являются одним из основных видов информации, от запроса к запросу циркулирующей между броузером-клиентом и сервером. На стороне клиента обычно им соответствуют куки (cookies), а на стороне сервера в промежутках между запросами эти переменные обычно (по умолчанию) хранятся в локальном файле. Именно здесь и гнездится угроза производительности будущего приложения.

Действительно, представьте себе, что из-за постоянно возрастающей нагрузки пришлось распределить ее между двумя серверами; причем выбор сервера при каждом запросе производится случайно. Если сессионные данные хранятся на этих серверах локально, то существует опасность их рассогласования. В этом случае каждый следующий запрос (например, при обновлении страницы) будет работать с различными сессионными данными, что, безусловно, ни к чему хорошему не приведет.

Решениям проблемы может явиться вынос сессионных данных на внешний общий сервер (например, базы данных). Тогда все запросы, независимо от обрабатывающего их сервера, будут пользоваться одними и теми же сессионными данными. Теперь дальнейшее добавление новых серверов в случае возрастания нагрузки не вызовет больше никаких затруднений.

Существенному повышению производительности приложения может способствовать кэширование, т. е. сохранение промежуточных результатов работы приложения. Для этого можно использовать пакет PEAR::Cache (или Cache_Lite).

Запросы к базе данных. Для сохранения результатов запросов к базе данных и выбора оптимальной стратегии кэширования (определения наиболее затратных запросов) удобно использовать класс Cache_DB, входящий в состав пакета Cache.

Возвращаемые функциями значения. Как Cache, так и Cache_Lite позволяют сохранять результаты, возвращаемые функциями. Таким образом удается избежать необходимости многократно выполнять одну и ту же функцию с одинаковыми параметрами.

Компилированные шаблоны. Многие популярные системы шаблонов (Smarty, HTML_Template_Flexy) компилируют используемые шаблоны, готовя на их основе готовый PHP код. Тем самым предотвращается многократный разбор (parsing) одних и тех же шаблонов.

Буферизация вывода. Также могут быть сохранены (как HTML код) результаты работы целого скрипта или какой-то его части. Средства для этого содержат ранее упомянутые пакеты.

PHP 5 позволяет легко создавать объектно-ориентированные приложения. В то же время, многие расширения все еще предлагают процедурные решения (функции); следует помнить и о встроенных функциях PHP.

В данной ситуации следует соблюдать "золотую середину". С одной стороны, ООП позволяет создавать более читабельный код; с другой - излишнее увлечение им может сделать приложение чрезмерно сложным.

В частности, написание объектно-ориентированных оболочек к встроенным функциям имеет смысл только в том случае, если они действительно обеспечивают, например, унифицированный API или более высокий уровень абстрагирования (впрочем, каждое абстрагирование должно преследовать какую-то конкретную цель).

Следует помнить также, что, несмотря на значительное развитие объектной модели в PHP 5, она все же значительно уступает аналогичным моделям в таких языках, как C++ и Java (как по уровню, так и по быстродействию).

Created with DocBook Created with Libxslt


В избранное