]]>
]]>
Рейтинг@Mail.ru

Yii улучшение производительности

Материал из Веб программирование.

Перейти к: навигация, поиск

Содержание

Улучшение производительности

Производительность Веб-приложений зависит от многих факторов. Доступ к БД, операции с файловой системой, пропускная способность сети - это все факторы влияют на общую производительность. Yii пытается свести к нулю влияние на производительность факторов, которые зависят от фреймворка. Но, тем не менее, остается много мест в приложении, правильная настройка которых может увеличить общую производительность.

Включение надстройки APC

Подключение расширения PHP APC - это возможно самый простой способ увеличить общую производительность приложения. APC кэширует и оптимизирует промежуточный байт-код, получаемый в результате интерпретации PHP-скриптов. При получении байт-кода скрипта, уже не требуется его постоянная интерпретация при получени запроса на выполнение.

Выключение режима отладки (debug mode)

Это тоже легкий способ повысить быстродействие. Приложение Yii выполняется в режиме отладки, когда константа `YII_DEBUG` установлена в `true`. Режим отладки очень полезен при разработке, но он влияет на скорость работы, т.к. подгружаются некоторые дополнительные компоненты фреймворка. Например, при записи возникающих сообщений может дополнительно записываться необходимая для отладки информация.

Использование утилиты `yiilite.php`

При включенном PHP APC появляется возможность заменить загрузочный файл Yii `yii.php` заменить на `yiilite.php`, который выполняется быстрее.

Файл `yiilite.php` есть в каждом релизе Yii. Можно сказать пару слов о его содержании. Он является результатом объединения кода нескольких часто используемых классов фреймворка Yii, удаления комментариев из них, а также удаления служебной информации. Таким образом, использование утилиты `yiilite.php` уменьшает количество подключаемых файлов в самом начале запуска приложения.

Замечание: Использование `yiilite.php` без APC уменьшит производительность! Потому что `yiilite.php` содержит несколько классов, который не используются в каждом запросе. Также в ходе проверок было выявлено уменьшение производительности при использовании `yiilite.php` на некоторых серверных конфигурациях, даже когда APC был включен. Самым лучшим показателем будет проведение тестирования производительности при использовании `yiilite.php` или запуск стандартного `hello world` примера и замера его скорости выполнения.

Использование кэширования

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

Если приложение использует для доступа к БД Active Record, мы должны включить кэширование схемы БД, чтобы не запрашивать каждый раз ее у БД. Это можно сделать установив свойству CDbConnection::schemaCachingDuration значение больше 0 (количество секунд, которые хранится схема БД).

Кроме кэширования уровня самого приложения, мы также можем использовать серверные кэширующие технологии. В дополнение к уже упомянутой в этом разделе технике APC кэширования, можно назвать такие, как Zend Optimizer, eAccelerator, Squid.

Оптимизация работы с базой данных

Чаще всего самым узким местом в скорости работы веб-приложения является получение данных из БД. И хотя кэширование облегчает работу приложения, он не решает проблему полностью. Когда БД содержит огромное количество данных и кэшированные данные неверны, получение последних добавленных данных может быть недопустипо долго без должного проектирования структуры БД и запросов к ней.

К проектированию структуры БД нужно подходить с умом (с чувством, с толком, с расстановкой). Необходимо верно использовать индексы, они позволяют запросам `SELECT` выполняться в разы быстрее, но могут снизить быстродействие запросов `DELETE`, `UPDATE` или `INSERT`.

Для сложных запросов рекомендуется использовать предоставляемые СУБД `Виды` (`VIEW`), вместо использования обычных запросов внутри PHP кода.

НЕ ПЕРЕИСПОЛЬЗУЙТЕ Active Record! Этот паттерн разработан для упрощения доступа к данным в стиле ООП, но он уменьшает быстродействие из-за того, что должен создавать новый объект для отражения результатов запросов к СУБД. Для приложений, активно использующих и обрабатывающих большие объемы данных лучше использовать DAO или, даже, API самой СУБД.

Не в последнюю очередь! Используте ограничения `LIMIT` в запросах `SELECT`. Это предотвратит переполнение данными из БД выделенной для приложения памяти.

]]>
Google+
]]>
Личные инструменты
Хочешь еще цитату? Программирование – это искусство. Совершенство достигается тогда, когда программа, выполняющая свою функцию, занимает всего несколько строк; когда одна программа может делать то, чего не может делать другая; когда одни программы могут проникать в другие; когда программа может манипулировать с файлами такими способами, которые раньше считались невозможными. Совершенные программы, отдельные приемы программирования, удачные алгоритмы могут быть предметом коллекционирования и почитания.Стивен Леви
веб-программирование
Просмотры
чтим

Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/webproger/data/www/webproger.ru/1c6a72389c0fd92079ac7ae7cd356173/sape.php on line 218 Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/webproger/data/www/webproger.ru/1c6a72389c0fd92079ac7ae7cd356173/sape.php on line 224

]]>
Rambler's Top100
]]>
]]>
]]>