Перейти к содержимому

Настройка PHP XHProf в Azure Web app

Получив задание настроить XHProf в развернутом в Web app сайте – я был несколько обескуражен отсутствием документации по настройке данного профайлера в . Однако, благодаря терпению и участию Андрея, я справился с это задачей.

XHprof – это иерархический профайлер для PHP c HTML интерфейсом. Ядро написано на языке С (на уровне отчетов и интерфейса код уже весь на PHP), а для скачки доступно в виде екстеншина для PHP. Этот профайлер умеет собирать данные об использовании памяти, ресурсов процессора, количестве и последовательности вызовов функций, а также inclusive time (время, потраченное на функцию и на все функции, вызванные из нее) и exclusive time(время, потраченное на функцию без учета времени на вложенные функции).
Дополнительно, XHprof поддерживает сравнение двух запусков (иерархический DIFF отчет) и умеет объединять несколько запусков для усреднения данных. Дополнительную инфомацию можно получить на этом сайте или в репозитории.

По сути, настройка и тюнинг окружения PHP в Azure – довольно таки простая задача, подробно описанная в документации. Но, как всегда, дьявол кроется в деталях. и потому я решил написать этот пост.

    1. В первую очередь, для установки PHP расширения нам нужен .dll файл этого расширения, совместимый с установленной версией PHP (5.4 в моем случае), скомпилированный под VC9 и non-thread-safe (nts) совместимый. Для XHProf скачать можно здесь - http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/
    2. Распакуйте архив, подключитесь к FTP, создайте папку /site/ext и залейте php_xhprof.dll в эту папку
    3. Далее, в портал Azure (или при помощи Powershell) нужно создать App Setting в нашем Web app с ключом PHP_INI_SCAN_DIR и значение d:\home\site\ini
    4. Далее, создаем папку /site/ini через FTP и заливаем туда файл с названием extensions.ini со следующим содержанием:
extension=d:\home\site\ext\php_xhprof.dll
  1. Для того, чтобы профайлинг заработал, нам нужно изменить php.ini. Для этого, надо в папку /site/ini залить settings.ini, в котором будет следующий контент:
    [xhprof]
    xhprof.output_dir="d:\home\site\temp"
  2. Последний шаг – создать /site/temp

Вот и всё, и наше приложение теперь профилируется при помощи XHProf.