Я в курсе существования пары профайлеров PHP кода, которые позволяют находить «узкие» места. Но не всегда получается их установить и настроить. Поэтому приходится изобретать что-то на коленке.
Недавно пришлось искать причину жутких «тормозов» в одном сайте. Работать надо было на боевом сервере. В результате получился вот такой код:
$starttime = microtime(true);
function profileIt($str) {
global $starttime;
if ( isset($_COOKIE["profiler"]) &&
$_COOKIE["profiler"] == "newman" ) {
$endtime = microtime(true);
$dt = $endtime - $starttime;
echo "PROFILER:".$str.":".$dt."<br>\n";
$starttime = microtime(true);
}
}
Файл с этим кодом подключается в начале любого скрипта. Проверка куки нужна для того чтобы скрипт работал только для разработчика. Как поставить куку — каждый выбирает сам. Я например использую для этого расширение для FireFox.
Дальнейшее использование профайлера PHP легче легкого.
...
profileIt("Start work code");
... какой-то подозрительный код ...
profileIt("Stop code");
...
В результате работы скрипт выведет метку PROFILER:Stop code:<time> где <time> это время работы кода в секундах.
По сути же вызов функции profileIt выводит время прошедшее с момента ее предыдущего запуска, что впрочем понятно из кода этой самой функции 🙂