Блог Горошко Андрея 1C-Битрикс,PHP,SQL,Разработка Sql Tracker: Руководство разработчика

Sql Tracker: Руководство разработчика

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Sql Tracker: Руководство разработчика», проанализируем лучшие практики и покажем, как правильно использовать запросов в реальных задачах.

—
title: Отладка запросов
—

Класс Bitrix\Main\Diag\SqlTracker используется для отладки и анализа SQL-запросов:

  • замеряет время выполнения,
  • собирает стек вызовов,
  • сохраняет параметры запросов binds.

Запустить трекинг

Метод startTracker запускает трекинг.

$tracker = \Bitrix\Main\Application::getConnection()->startTracker(true);  
  • true — начинает новый трекинг и прерывает предыдущий.
  • false — продолжает текущий трекинг.

Выполнить запрос

// Пример явного SQL-запроса  
\Bitrix\Main\Application::getConnection()->query("UPDATE b_user SET NAME='Test' WHERE ID=1");  

Получить результат

foreach ($tracker->getQueries() as $query) {
    print_r([
        $query->getSql(),      // текст запроса  
        $query->getTime(),     // время в секундах  
        $query->getTrace(),   // стек вызовов  
        $query->getNode(),    // ID ноды кластера или null  
        $query->getBinds(),  // параметры запроса
    ]);
}

Трекинг автоматически останавливается при завершении скрипта.

  • getNode() — возвращает null, если БД не кластеризована.
  • getBinds() — содержит параметры, переданные в Connection::query().

Пример. Выбрать три самых медленных запроса.

$queries = $tracker->getQueries();
usort($queries, fn($a, $b) => $b->getTime() <=> $a->getTime());
$slowestQueries = array_slice($queries, 0, 3); // Получаем три самых медленных запроса

Дополнительные методы

  • Получить общее количество запросов:
   $count = $tracker->getCounter();
  • Получить общее время выполнения:
   $totalTime = $tracker->getTime();
  • Управлять глубиной стека:
   $tracker->setDepthBackTrace(10); // Установить глубину стека
   $depth = $tracker->getDepthBackTrace(); // Получить текущую глубину

Записать лог трекера в файл

Записывать лог можно с помощью методов startFileLog и stopFileLog.

// Запускаем трекинг
$tracker = \Bitrix\Main\Application::getConnection()->startTracker(true);

// Указываем путь к файлу лога
$logPath = $_SERVER['DOCUMENT_ROOT'].'/upload/sql_queries.log';

// Начинаем запись логов в файл
$tracker->startFileLog($logPath);

// Получаем объект соединения с БД
$connection = \Bitrix\Main\Application::getConnection();

// Выполняем SQL-запросы. Они будут записаны в лог
$connection->query("SELECT * FROM b_file");
$connection->query("SELECT * FROM b_module_to_module");

// Останавливаем запись логов
$tracker->stopFileLog();

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Sql Tracker: Руководство разработчика» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Внедрение Битрикс24 для строительной компании и застройщикаВнедрение Битрикс24 для строительной компании и застройщика

Профессиональная настройка и внедрение Битрикс24 CRM позволяет систематизировать работу отдела продаж, исключить потерю лидов и автоматизировать ключевые бизнес-процессы компании. Услуга «Внедрение Битрикс24 для строительной компании и застройщика» обеспечивает учет этапов

Внедрение умного поиска Sphinx / ElasticSearch в интернет-магазин БитриксВнедрение умного поиска Sphinx / ElasticSearch в интернет-магазин Битрикс

Услуга «Внедрение умного поиска Sphinx / ElasticSearch в интернет-магазин Битрикс» предназначена для компаний, стремящихся получить технологическое превосходство над конкурентами, ускорить работу сайта и обеспечить бесперебойную обработку тысяч заказов. мгновенный полнотекстовый

Разработка сайта для ресторана, кафе и кейтеринга на 1С-БитриксРазработка сайта для ресторана, кафе и кейтеринга на 1С-Битрикс

Создание и развитие эффективного веб-ресурса по направлению «Разработка сайта для ресторана, кафе и кейтеринга на 1С-Битрикс» позволяет усилить позиции бренда на рынке, автоматизировать взаимодействие с заказчиками и кратно увеличить поток