Рано или поздно все программисты PHP сталкиваются с необходимостью профилирования собственного кода. Она возникает на этапе оптимизации работы веб-приложения. Вообще, профилирование — это подсчет затрат времени на выполнение каждой отдельной функции (в том числе методов классов) в контексте времени генерации страницы-ответа целиком. О профилировании написано в Интернете достаточно много, поэтому на теории заострять внимание смысла нет. «Под катом» описана установка и настройка софта для профилирования PHP-скриптов в ОС Windows.
Для профилирования нам понадобится компонент подсчета времени выполнения функций 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. Благо, она абсолютно простая.
- Зайдите на www.winkde.org/pub/kde/ports/win32/installer/ и скачайте самую последнюю версию установщика.
- Запустите установщик (есть картинки процесса установки), выберите каталог установки (например в C:\KDE), скачайте то, что вам нужно (я выбрал все пакеты — это около 230 Мб).
- Добавьте переменную окружения KDEDIRS (Пуск > Панель управления > Система > Дополнительно > Переменные среды, нажмите «Создать» в разделе Пользовательские переменные и создайте переменную с именем KDEDIRS и значением равным папке, в которую Вы установили KDE4, напр. C:\KDE).
- Добавьте папку библиотек, %KDEDIRS%\lib, и папку исполняемых файлов, %KDEDIRS%\bin, к переменной %PATH% Windows. (Пуск > Панель управления > Система > Дополнительно > Переменные среды, дважды щелкните на системной переменной Path и добавьте эти строки, разделяя их точкой с запятой.)
- Если у Вас не установлена Visual Studio 2005 (или 2008), то скачайте и установите «Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)«.
- Попробуйте запустить какое-нибудь Qt приложение в папке bin, например linguist.exe.
- Если получилось, попробуйте запустить любое приложение KDE, такое как kwrite.exe.
Дополнительная информация по установке.
На этом установка закончена. Вы можете запустить KCachegrind (c:\KDE\bin\kcachegrind.exe) и скормить ей файл вашего отчета профайлера.
Дополнительную информацию по профилированию PHP-кода можете почитать на сайте Zend’а, а я планирую написать еще статейку на эту тему, может даже завтра.