Skip to content

Instantly share code, notes, and snippets.

@EscApp2
Forked from s2ar/tracker.php
Last active March 5, 2023 12:17
Show Gist options
  • Save EscApp2/f427e3df155bf08da77dc85e87d56bef to your computer and use it in GitHub Desktop.
Save EscApp2/f427e3df155bf08da77dc85e87d56bef to your computer and use it in GitHub Desktop.
Отладка SQL-запросов
<?
global $DB;
$orig_sql_stat = $DB->ShowSqlStat;
$DB->ShowSqlStat=true;
$res_elem = CIBlockElement::GetList(
array(),
$arFilter,
false,
false, //array('nTopCount'=>1),
$arSelect);
$DB->ShowSqlStat=$orig_sql_stat;
foreach ($DB->arQueryDebug as $query) {
pre($query->getSql()); // Текст запроса
//pre($query->getTrace()); // Стек вызовов функций, которые привели к выполнению запроса
//pre($query->getTime()); // Время выполнения запроса в секундах
}
//pre($DB->arQueryDebug);
<?php
use Bitrix\Main\Diag;
$connection = Bitrix\Main\Application::getConnection();
/** Bitrix\Main\Diag\SqlTracker $tracker */
$tracker = $connection->startTracker();
// ...
$connection->stopTracker();
foreach ($tracker->getQueries() as $query) {
var_dump($query->getSql()); // Текст запроса
var_dump($query->getTrace()); // Стек вызовов функций, которые привели к выполнению запроса
var_dump($query->getTime()); // Время выполнения запроса в секундах
}
//https://mrcappuccino.ru/blog/post/bitrix-d7-debug
// Или так
$query = new Bitrix\Main\Entity\Query(Bitrix\Iblock\ElementTable::getEntity());
echo '<pre>', $query->getLastQuery(), '</pre>';
//Замер времени выполнения кода
Diag\Debug::startTimeLabel("label1");
// ...некоторые действия...
Diag\Debug::endTimeLabel("label1");
// далее можем использовать другие метки на других кусках кода
Diag\Debug::dump(Diag\Debug::getTimeLabels());
/*
Выведет на экран:
array(1) {
["label1"]=>
array(2) {
["start"]=>
float(1473415593.0706)
["time"]=>
float(1.215934753418E-5)
}
}
*/
Diag\Helper::getCurrentMicrotime(); //возвращает текущую метку времени с микросекундами.
Diag\Helper::getBackTrace(); //возвращает стек вызовов функций.
// Обычный дамп
\CSaleHelper::WriteToLog("basketRow", array(
//"basketRow" => print_r($basketRow,1)
"calcDiff" => print_r($calcDiff,1)
), "STEP2");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment