В первой строке скрипта вызывается apd_set_pprof_trace()(), которая запускает трассировку:
<?php
apd_set_pprof_trace();
?>
Эта строка может быть добавлена в любом месте скрипта, но если трассировка не инициирована в начала скрипта, то данные, которые могли бы привести вас к узким местам в потерях производительности, будут утеряны.
Выходной дамп после запуска скрипта будет записан в apd.dumpdir/pprof_pid.ext.
Если используется CGI версия PHP, то необходимо добавить флаг '-e'
включающий расширенную информацию для корректной работы APD. Например:
php -e -f script.php
Для отображения форматированных данных профиля, необходимо выполнить команду pprofp с сортировкой и другими выбранными параметрами отображения. Форматированный вывод будет выглядеть примерно так:
bash-2.05b$ pprofp -R /tmp/pprof.22141.0 Trace for /home/dan/testapd.php Total Elapsed Time = 0.00 Total System Time = 0.00 Total User Time = 0.00 Real User System secs/ cumm %Time (excl/cumm) (excl/cumm) (excl/cumm) Calls call s/call Memory Usage Name -------------------------------------------------------------------------------------- 100.0 0.00 0.00 0.00 0.00 0.00 0.00 1 0.0000 0.0009 0 main 56.9 0.00 0.00 0.00 0.00 0.00 0.00 1 0.0005 0.0005 0 apd_set_pprof_trace 28.0 0.00 0.00 0.00 0.00 0.00 0.00 10 0.0000 0.0000 0 preg_replace 14.3 0.00 0.00 0.00 0.00 0.00 0.00 10 0.0000 0.0000 0 str_replace
Опция -R используемая этом примере сортирует профильную таблицу по количеству реального времени, которое скрипт потратил на выполнение каждой функции. Поле "cumm call" показывает сколько обращений было совершено к каждой функции, а "s/call" поле показывает сколько в среднем секунд было затрачено на каждое обращение.
Для генерации стека вызовов в файл профиля KCacheGrind анализируемого приложения, требуется вызов команды pprof2calltree.