• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/classes/general/keeper.php
  • Класс: CPerfomanceKeeper
  • Вызов: CPerfomanceKeeper::saveQueries
static function saveQueries($HIT_ID, $COMP_ID, $arQueryDebug, &$NN)
{
	global $DB;

	foreach ($arQueryDebug as $arQueryInfo)
	{
		self::findCaller($arQueryInfo["TRACE"], $module_id, $comp_id);

		$arFields = array(
			"HIT_ID" => $HIT_ID,
			"COMPONENT_ID" => $COMP_ID,
			"NN" => ++$NN,
			"QUERY_TIME" => $arQueryInfo["TIME"],
			"NODE_ID" => intval($arQueryInfo["NODE_ID"]),
			"MODULE_NAME" => $module_id,
			"COMPONENT_NAME" => $comp_id,
			"SQL_TEXT" => $arQueryInfo["QUERY"],
		);
		$SQL_ID = $DB->Add("b_perf_sql", $arFields, array("SQL_TEXT"));

		if ($SQL_ID && COption::GetOptionString("perfmon", "sql_backtrace") === "Y")
		{
			$pl = mb_strlen(rtrim($_SERVER["DOCUMENT_ROOT"], "/"));
			foreach ($arQueryInfo["TRACE"] as $i => $arCallInfo)
			{
				$DB->Add("b_perf_sql_backtrace", array(
					"ID" => 1,
					"SQL_ID" => $SQL_ID,
					"NN" => $i,
					"FILE_NAME" => mb_substr($arCallInfo["file"], $pl),
					"LINE_NO" => $arCallInfo["line"],
					"CLASS_NAME" => $arCallInfo["class"],
					"FUNCTION_NAME" => $arCallInfo["function"],
				));
			}
		}
	}
}