Я в курсе существования пары профайлеров 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 выводит время прошедшее с момента ее предыдущего запуска, что впрочем понятно из кода этой самой функции 🙂