Возникла необходимость поднять профайлинг для проекта на локальном серевере под Ubuntu 10.04
Выбор само собой пал на Xhprof. Конечной целью было получение графическое отображения графа вызовов функций.
Что было сделано для этого?
Так же пропишем в /etc/hosts наш хост.
Выбор само собой пал на Xhprof. Конечной целью было получение графическое отображения графа вызовов функций.
Что было сделано для этого?
Установка xhprof
Установка ведется через pecl. На момент написания статьи версия xhprof была 0.9.3.
Затем, в php.ini прописываем наше расширение и путь для хранилища результатов:pecl install xhprof-0.9.3
[xhprof]Путь необходимо будет создать и навешать соотв. права.
extension=xhprof.so
xhprof.output_dir=/usr/local/xhprof/out
Пользовательский интерфейс
Доступ к данным будем получать через web-интерфейс. Для этого настроим локальный хост. Пусть будет xhprof.lan
Сперва скачаем сырцы и распакуем в директорию с файлами нашего хоста.
Затем опишем хост. Пример для Nginx:
Секция location может варьироваться в зависисмости от настроек вашего php5-fpm.server {
listen 80;
server_name xhprof.lan;
charset utf8;
root /var/www/xhprof.lan/xhprof-0.9.3/xhprof_html;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Так же пропишем в /etc/hosts наш хост.
Визуализация
Для визуализации нам понадобится утилита Graphviz:
apt-get install graphviz
Пример работы
Итак, все установлено и настроено. Как теперь с этим жить работать? Приведу пример использования.
В начале приложения пишем что-нибудь подобное:
И в конце приложения:if (PROFILING_ON){
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
$profilingClose = function(){
$xhprof_data = xhprof_disable();
include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testproject");
};
}
if (PROFILING_ON){Потом запускаем наше приложение. После чего идем на новосозданный хост xhprof.lan и выбираем из списка сгенерированной статистики нужную.
\call_user_func($profilingClose, array());
}
Комментариев нет:
Отправить комментарий