При работе над высоко нагруженном проекте каждый запрос на счету. И есть необходимость видеть сколько, запросов выполняет определенный кусок кода или метод обвертки.
[spoiler]
Оригинал лежит по адресу /bitrix/modules/main/classes/general/main.php
Класс оригинал CDebugInfo, я его чуть упростил, и выложу как есть, редактируйте под себя как вам нужно.
Использование
Результат примерно такой
[PATH] => /dir/index.php
[QUERY_COUNT] => 4
[QUERY_TIME] => 0.0015
[ALL_TIME] => 0.0048
[TRAC] =>
Если добавить параметр в метод $REM_DEBUG->Output(true) то в ключе [TRAC] => массива будет выводится трасировка.
Может у кого-то есть наработки по этой теме, прошу поделится.
[spoiler]
Оригинал лежит по адресу /bitrix/modules/main/classes/general/main.php
Класс оригинал CDebugInfo, я его чуть упростил, и выложу как есть, редактируйте под себя как вам нужно.
class RemDebug { private $inc_time; private $cnt_query; private $query_time; private $arQueryDebugSave; /** * Начинаем считать запросы * */ public function Start() { global $DB; $this->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(); |
Использование
$REM_DEBUG->Start(); $rsUser = CUser::GetByID(23); echo "<pre>", print_r($REM_DEBUG->Output())."</pre>"; |
Результат примерно такой
[PATH] => /dir/index.php
[QUERY_COUNT] => 4
[QUERY_TIME] => 0.0015
[ALL_TIME] => 0.0048
[TRAC] =>
Если добавить параметр в метод $REM_DEBUG->Output(true) то в ключе [TRAC] => массива будет выводится трасировка.
Может у кого-то есть наработки по этой теме, прошу поделится.
