Главная Блог Статьи Конференции Портфолио Flash-point RSS  RU EN

Владимир Бондаренко

Специалист по web-технологиям
ПОСЛЕДНИЕ ЗАПИСИ
  •  Тьма за спиной – мобильный квест написанный Виталием Зыковым
  •  Автоматизация процессов в компании: объединение всей информационной среды в одной системе Mauris CRM (CMS + SalesForce + MailChimp + мобильное приложение)
  •  10 советов по созданию страницы своей компании в «Википедии»
  •  Сравниваем форматы для документирования RESTful API: WADL, Swagger, I/O Docs, API BluePrint, RAML, Google API Discovery, Apimatic

  • ОБЛАКО ТЕГОВ
    Ajax Apple Chrome cloud CMS ECM Flash-point Folium iPad iPhone Java Script jQuery mobile development MVC PHP Python RESTful API SDK SEO StarCraft Swagger Twitter блоги видео кодирование конференция обучение SEO оцифровка информации плагины презентация программирование развлечение скрипт советы сравнение технологии хостинг ЧПУ
    КОНТАКТЫ

    Skype: coolweb_ua

    twitter

    СЧЕТЧИК


    Анализ методов повышения производительности PHP программ

     

    Алексеев Н. А., Бондаренко В. Ю.

    Научный руководитель: канд. техн. наук Алексеев Н. А.
    Национальный технический университет Украины «Киевский политехнический институт»,
    Институт телекоммуникационных систем,
    03056, г. Киев, проспект Победы 37, корп. 30.
    e-mail: nick@its.kpi.ua, volodymyr.bondarenko.ua@gmail.com

    1. Введение

    Как известно, PHP является одной из самых распространенных технологий создания Интернет-проектов. В то же время, она является достаточно требовательной к аппаратным ресурсам сервера приложений. Как следствие, с ростом популярности такого веб-ресурса может наступить «критичный момент», когда сервер перестает отвечать на запросы.

     

    2. Основная часть

    Распространено скептическое мнение относительно необходимости и целесообразности оптимизации кода PHP, так как считается, что данный язык может быть применим только для мало нагруженных сайтов. Тем не менее, правильный подход к оптимизации может существенно ускорить роботу Интернет ресурса [1].

    С увеличением нагрузки на сервер, каждая PHP страница будет обрабатываться дольше. Таким образом, объективным критерием быстродействия системы можно считать время, которое PHP требуется на ответ веб-серверу.

    Для тестирования быстродействия выполнения кода предлагается выбрать программный продукт Vulcan Logic Disassembler, который показывает количество действий, выполняемых процессором при обработке программного кода веб-приложения, что позволит сравнить рассматриваемые подходы вне зависимости от вычислительных характеристик аппаратного обеспечения.

    Во время работы были выделены основные принципы повышения производительности PHP:

    1. выбор более производительных элементов программного кода;
    2. применение кеширования откомпилированного кода;
    3. кеширование неоткомпилированного кода;
    4. внедрение многпотоковости;
    5. использование Zend Optimizer.

    Первый способ заключается в выборе операций, которые обрабатываются быстрее  и выполняют те же самые задачи. Примерами могут служить применение многоразовых комбинаций if-else вместо комбинации switch(), использование кавычек в работе с ассоциативными массивами ($row['id'] а не $row[id]), использование локальных переменных вместо глобальных, освобождение памяти после окончания работы с переменными (unset()) и др.

    Основными этапами работы PHP кода являются:

    1. запрос от пользователя;
    2. Fork (медленная операция);
    3. сборка и компиляция (очень медленно);
    4. исполнение кода;
    5. возврат результата веб-серверу.

    Второй и третий принципы повышения производительности основаны на технологии кэширования. Применение специальных программ, которые называются акселераторами, позволит уйти от выполнения второго и третьего этапов работы PHP кода. Акселераторы кэшируют уже скомпилированный байт-код, который будет браться с кэша и выполняться на прямую. Еще одним способом использования технологии кэширования является применение программы Memcached. Она может быть заложена во время выполнения второго этапа (Fork), например, для ускорения запросов к базе данных. На этапе компиляции - использоваться, кэшируя не скомпилированный код. Недостатком такого подхода к оптимизации является необходимость внедрения  дополнительных строк кода в PHP страницы, в то время как акселерометры этого не требуют. Внедрение потоков в код PHP является очень эффективным подходом, однако он целесообразен только в задачах, допускающих параллелизм алгоритмов и область применения этого подхода очень узка [2]. Еще одним подходом является использование серверного модуля для запуска закодированных с помощью Zend Encoder и Zend SafeGuard Suite скриптов - Zend Optimizer. Несмотря на заявленный разработчиком прирост производительности 40%, в ходе проведенных в работе исследований, таких результатов получено не было. 

     

    3. Заключение

    Обобщенные результаты по каждому из рассмотренных подходов показаны в Таблице 1.:

    Подход

    Ср. увеличение произв-ти

    1

    Применение производительных конструкций кода PHP

    до 10%

    2

    Применение кеширования откомпилированного кода  (акселераторы)

    до 300%

    3

    Кеширование неоткомпилированного кода (Memcached)

    до 300%

    4

    Многопоточность

    до 50%

    5

    Zend Optimizer

    до 20%

    Можно считать, что наиболее предпочтительным способом повышения производительности PHP, не требующим переработки исходного кода является применение акселераторов. Однако для достижения наилучшего результата следует комбинировать все рассмотренные подходы.

     

    4. Список литературы

    [1] M. Ternovoy, O. Shtogrina, “Approach to data processing in information-telecommunication environment of complex administrative systems” in  19th International Crimean Conference “Microwave & Telecommunication Technology. CriMiCo 2009”, 2009, pp. 358 – 359

     [2] L.S. Globa, R.L. Novogrudska, “Informational and computational resourses of Internet-portal «strength of materials» integration” in 21th International Crimean Conference “Microwave & Telecommunication Technology. CriMiCo 2011”, 2011, pp. 485-486 


    7я Международная конференция

    «Современные проблемы радиоэлектроники, телекоммуникаций и компьютерной инженерии TCSET'2012», 21— 24 февраля 2012 г., Львов-Славское, Украина

    Опубликовано в сборнике TCSET'2012


    Использование любых материалов сайта возможно только при размещении активной и прямой ссылки на VBond.Kiev.ua.

    Главная | Блог | Статьи | Конференции | Портфолио | Flash-point | RSS

    developed by Bondarenko Volodymyr