Профилирование PHP под Windows

Рано или поздно все программисты сталкиваются с необходимостью профилирования собственного кода. Она возникает на этапе оптимизации работы веб-приложения. Вообще, профилирование — это подсчет затрат времени на выполнение каждой отдельной функции (в том числе методов классов) в контексте времени генерации страницы-ответа целиком. О профилировании написано в Интернете достаточно много, поэтому на теории заострять внимание смысла нет. «Под катом» описана установка и настройка софта для профилирования PHP-скриптов в .

Для профилирования нам понадобится компонент подсчета времени выполнения функций PHP и формирования отчета и компонент визуального представления этого отчета для анализа.

Существуют как минимум 3 профайлера PHP-кода: Xdebug, Advanced PHP Debuger и DBG. Скажу честно, два последних я даже не рассматривал по двум причинам: Xdebug — самый популярный, Xdebug встроен в сборку xampp, которая стоит на моей локальной машине.

Установка Xdebug

Интеграция Xdebug’а в PHP очень проста. С сайта www.xdebug.org необходимо скачать DLL-extension для вашей версии PHP. Вот файл для PHP 5.2.1-5.2.6 под Windows. Скачанный файл необходимо положить в каталог расширений PHP (extension_dir). А в php.ini добавить следующие строки:

extension=php_xdebug.dll

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension_ts=»c:\php\ext\php_xdebug.dll»
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir=»c:\temp»

При этом строки секции [Zend] требуется закомментировать (поставить ; в начале каждой строки):

[Zend]
;zend_extension_ts = «c:\php\zendOptimizer\lib\ZendExtensionManager.dll»
;zend_extension_manager.optimizer_ts = «c:\php\zendOptimizer\lib\Optimizer»
;zend_optimizer.enable_loader = 0
;zend_optimizer.optimization_level=15

Установите правильные пути в параметры zend_extension_ts и xdebug.profiler_output_dir секции XDebug. Путь xdebug.profiler_output_dir — это каталог, в который будет записан файл отчета.

На этом установка Xdebug закончена. Подробности по тонкой настройке этого расширения ищите при необходимости в гугле. Ознакомиться со всеми его возможностями можно на официальном сайте.

Установка KCachegrind под Windows

Открываем любую страницу вашего сайта и в каталоге xdebug.profiler_output_dir появляется файл отчета. Открывать его в Блокноте или другом средстве просмотра текстовых файлов нет никакого смысла. Его формат невозможно воспринять в текстовом виде. Для просмотра файла отчета понадобится средство KCachegrind, которое требует наличия KDE для запуска.

Есть, правда, еще WinCachegrind, но эта программулина глючная, слабенькая и с 2005 года не обновляется. Мой файл отчета она прочитать не смогла (parse error).

Итак, приступаем к установке KCachegrind под Windows. Благо, она абсолютно простая.

  1. Зайдите на www.winkde.org/pub/kde/ports/win32/installer/ и скачайте самую последнюю версию установщика.
  2. Запустите установщик (есть картинки процесса установки), выберите каталог установки (например в C:\KDE), скачайте то, что вам нужно (я выбрал все пакеты — это около 230 Мб).
  3. Добавьте переменную окружения KDEDIRS (Пуск > Панель управления > Система > Дополнительно > Переменные среды, нажмите «Создать» в разделе Пользовательские переменные и создайте переменную с именем KDEDIRS и значением равным папке, в которую Вы установили KDE4, напр. C:\KDE).
  4. Добавьте папку библиотек, %KDEDIRS%\lib, и папку исполняемых файлов, %KDEDIRS%\bin, к переменной %PATH% Windows. (Пуск > Панель управления > Система > Дополнительно > Переменные среды, дважды щелкните на системной переменной Path и добавьте эти строки, разделяя их точкой с запятой.)
  5. Если у Вас не установлена Visual Studio 2005 (или 2008), то скачайте и установите «Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)«.
  6. Попробуйте запустить какое-нибудь Qt приложение в папке bin, например linguist.exe.
  7. Если получилось, попробуйте запустить любое приложение KDE, такое как kwrite.exe.

Дополнительная информация по установке.

На этом установка закончена. Вы можете запустить KCachegrind (c:\KDE\bin\kcachegrind.exe) и скормить ей файл вашего отчета профайлера.

Дополнительную информацию по профилированию PHP-кода можете почитать на сайте Zend’а, а я планирую написать еще статейку на эту тему, может даже завтра.

Добавить комментарий