Как стать автором
Обновить

Комментарии 22

Очень давно вот здесь писал о профилировнии кода с XHProf на боевых серверах. В функции dev_boot_Down(если по вашему) я выводил на страницу абсолютно позиционированный див со ссылкой на профайлинг — было очень удобно.
упс :) да. Ну тут получилось более наглядно. А по поводу дива с ссылкой — оно конечно удобнее, но, например, у нас в приложении большинство запросов — это ajax-запросы. А переписывать еще и js-логику не хотелось. Но там где можно — да, такой див будет удобен.
Почему в блог «Веб-разработка», это же касается только PHP?
Нууу не совсем согласен с вами. Да, профилирование php, но вывод всего этого дела в браузере, а точнее в консоль firefox/firebug. Так что все-таки тут не только php.
Это понятно, но при отсутствии PHP это всё теряет смысл. В веб-разработке слишком много всего, где PHP вообще не участвует. Может перенесете? Есть хабы PHP, Клиентская оптимизация.
Клиентская тут точно не при чем. Но да, php походит лучше всего;)
Да, вы правы.
Сделайте пожалуйста граф кликабельным, в большем разрешении.
не знаю конечно зачем, ну ладно, сделал.
+ имеется скомпилированная версия под Win, а вот насколько рабочая, не могу сказать, познается методом проб и ошибок ;)
Спасибо за ссылку.

Поставил себе (Win7x64, apache + php5.3 VC9 TS) — работает без проблем, графы создает.
Для Chrome что-то подобное есть?
есть расширение Webug в котором реализован соответствующий функционал, на домашней страничке все подробно описано.
Меня заинтриговало слово «отладка», думал, что есть что-то интереснее xdebug в этом направлении.
Может я чего-то не понимаю, но где тут отладка?)
//-- DEV_START
//-- в режиме отладки подключаем debug библиотеки
if (APPLICATION_ENV === 'dev') {
// Подгружаем firephp
require_once(__DIR__. '/includes/ExtProcs/debug/firephp/FirePHP.class.php');
//-- подгружаем профайлер
require_once (XHPROF_ROOT. '/xhprof_lib/utils/xhprof_lib.php');
require_once (XHPROF_ROOT. '/xhprof_lib/utils/xhprof_runs.php');
// Инициализируем профайлинг с нужными флагами. Подробное описание флагов
// можно найти на php.net/manual/ru/xhprof.constants.php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}
//-- DEV_END


я делал так:
на продакшене xhprof не устанавливается по определению.

if (extension_loaded('xhprof')) {
echo "profiler enablen";
include_once '/home/a_kalendarev/Загрузки/xhprof-0.9.2/xhprof_lib/utils/xhprof_lib.php';
include_once '/home/a_kalendarev/Загрузки/xhprof-0.9.2/xhprof_lib/utils/xhprof_runs.php';
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}
  $link->someMethod($Data);
 
if (extension_loaded('xhprof')) {
$xhprof_data = xhprof_disable();
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'app');
//echo "profile disable id=$run_id n";
echo "Report: http://prof/index.php?run=$run_id&source=xhprof_test";
}
 
Это конечно хорошо. НО лишняя проверка, даже две в каждом скрипте. А если у вас высоконагруженный проект? Не айс.
можно так:
if (extension_loaded('xhprof')) {
define('APPDEBUG', true)
} else {
define('APPDEBUG', false)
}
 
//далее по тексту...
Если более подробно, то я перед деплоем делаю билд: app.phar
билд компилится скриптом create_phar.php, который выпиливает всю отладку и прочую дрянь напрочь + учитывает специфику площадки:
так как я деплоюсь на несколько площадок, каждая из которых имеет свои фишки: vk.com, facebook.com, odnoklassniki.ru и кол-во площадок будет увеличиваться :)
по этому эти фишечки необходимо учитываются при деплое.

Да, проект высоконагруженный, ты угадал :)
Я это A GUI for XHProf здесь оставлю, в своё время сберегло мне много нервов, может и ещё кому поможет.
По ссылке на втором скрине LFI кто-то раскручивал :))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории