Получив задание настроить XHProf в развернутом в azure Web app php сайте – я был несколько обескуражен отсутствием документации по настройке данного профайлера в iis. Однако, благодаря терпению и участию Андрея, я справился с это задачей.
XHprof – это иерархический профайлер для PHP c HTML интерфейсом. Ядро написано на языке С (на уровне отчетов и интерфейса код уже весь на PHP), а для скачки доступно в виде екстеншина для PHP. Этот профайлер умеет собирать данные об использовании памяти, ресурсов процессора, количестве и последовательности вызовов функций, а также inclusive time (время, потраченное на функцию и на все функции, вызванные из нее) и exclusive time(время, потраченное на функцию без учета времени на вложенные функции).
Дополнительно, XHprof поддерживает сравнение двух запусков (иерархический DIFF отчет) и умеет объединять несколько запусков для усреднения данных. Дополнительную инфомацию можно получить на этом сайте или в репозитории.
По сути, настройка и тюнинг окружения PHP в Azure – довольно таки простая задача, подробно описанная в документации. Но, как всегда, дьявол кроется в деталях. и потому я решил написать этот пост.
- В первую очередь, для установки PHP расширения нам нужен .dll файл этого расширения, совместимый с установленной версией PHP (5.4 в моем случае), скомпилированный под VC9 и non-thread-safe (nts) совместимый. Для XHProf скачать можно здесь - http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/
- Распакуйте архив, подключитесь к FTP, создайте папку /site/ext и залейте php_xhprof.dll в эту папку
- Далее, в портал Azure (или при помощи powershell) нужно создать App Setting в нашем Web app с ключом PHP_INI_SCAN_DIR и значение d:\home\site\ini
- Далее, создаем папку /site/ini через FTP и заливаем туда файл с названием extensions.ini со следующим содержанием:
extension=d:\home\site\ext\php_xhprof.dll
- Для того, чтобы профайлинг заработал, нам нужно изменить php.ini. Для этого, надо в папку /site/ini залить settings.ini, в котором будет следующий контент:
[xhprof] xhprof.output_dir="d:\home\site\temp"
- Последний шаг – создать /site/temp
Вот и всё, и наше приложение теперь профилируется при помощи XHProf.