-
-
Save EscApp2/f427e3df155bf08da77dc85e87d56bef to your computer and use it in GitHub Desktop.
Отладка SQL-запросов
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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