Количество запросов и время выполнения функции

При работе над высоко нагруженном проекте каждый запрос на счету. И есть необходимость видеть сколько, запросов выполняет определенный кусок кода или метод обвертки.

Оригинал лежит по адресу /bitrix/modules/main/classes/general/main.php

Класс оригинал CDebugInfo, я его чуть упростил, и выложу как есть, редактируйте под себя как вам нужно.

[source language=’php’]
inc_time = getmicrotime();
if($DB->ShowSqlStat)
{
$this->cnt_query = $DB->cntQuery;
$this->query_time = $DB->timeQuery;
$this->arQueryDebugSave = $DB->arQueryDebug;
$DB->arQueryDebug = array();
}
}

/**
* Заканчиваем считать запросы и выводим результат
*
* @param {bool} $bTrac — выводить трасировку
* @return {array}
*/
public function Output($bTrac = false)
{
global $DB, $APPLICATION, $USER;

if ($USER->IsAdmin())
{
$this->inc_time = round(getmicrotime()-$this->inc_time, 4);

if(($DB->cntQuery — $this->cnt_query)>0)
{
return array(
«PATH» => $_SERVER[«SCRIPT_NAME»],
«QUERY_COUNT» => $DB->cntQuery — $this->cnt_query,
«QUERY_TIME» => round($DB->timeQuery — $this->query_time, 4),
«ALL_TIME» => $this->inc_time,
«TRAC» => ($bTrac == true) ? $DB->arQueryDebug : »,
);
}
}
}
}
$REM_DEBUG = new RemDebug();
?>
[/source]

Использование:

[source language=’php’]
Start();

$rsUser = CUser::GetByID(23);

echo «

", print_r($REM_DEBUG->Output())."

«;
?>
[/source]

Результат примерно такой

[PATH] => /dir/index.php
[QUERY_COUNT] => 4
[QUERY_TIME] => 0.0015
[ALL_TIME] => 0.0048
[TRAC] =>

Если добавить параметр в метод $REM_DEBUG->Output(true) то в ключе [TRAC] => массива будет выводится трасировка.