Сегодня потребовалось заняться профилированием приложения, написанного на Yii2. Для этого будем использовать замечательный инструмент от Facebook - xhprof Большим преимуществом данного профайлера является возможность работы на боевом сервере. И так начнем.
Устанавливаем профайлер и инструмент для графа вызова функций следующей командой
Подключаем расширение xhprof к php-fpm.
Далее необходимо разместить папки xhprof_lib & xhprof_html и поместить их рядом с точкой входа в приложение index.php и подключить сборщик вызовов в index.php
Устанавливаем профайлер и инструмент для графа вызова функций следующей командой
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>";
Комментариев нет:
Отправка комментария