понедельник, 16 февраля 2015 г.

Подключение профайлера XHProf

Сегодня потребовалось заняться профилированием приложения, написанного на Yii2. Для этого будем использовать замечательный инструмент от Facebook - xhprof Большим преимуществом данного профайлера является возможность работы на боевом сервере. И так начнем.

Устанавливаем профайлер и инструмент для графа вызова функций следующей командой
sudo apt-get install php5-xhprof graphviz

Подключаем расширение xhprof к php-fpm.
Далее необходимо разместить папки xhprof_lib & xhprof_html и поместить их рядом с точкой входа в приложение index.php и подключить сборщик вызовов в index.php

<?php
// Начинаем сбор информации, дополнительно будем собирать информацию о  использовании оперативной памяти и процессоре
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

// отключаем отладочный режим
define('YII_DEBUG', false);
define('YII_ENV', 'prod');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();

// останавливаем сбор информации о вызовах
$xhprof_data = xhprof_disable();

include_once __DIR__ . '/xhprof_lib/utils/xhprof_lib.php';
include_once __DIR__ . '/xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new XHProfRuns_Default();

// save the run under a namespace "xhprof_foo"
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof_foo');

// внизу страницы отобразим ссылку на просмотр
echo "<a href='/xhprof_html/index.php?run={$run_id}&source=xhprof_foo' target='_blank'>profile</a>";

Комментариев нет:

Отправить комментарий