Проверить настройки Skip to content

SQL-запросы к базе данных Magento

В CMS Magento (Мадженто) есть хорошая возможность показать-проверить-«продебажить» SQL-запросы к базе данных.

В Magento все очень просто :)

Для начала откроем файл lib/varien/Db/Adapter/Pdo/Mysql.php и посмотрим на класс Varien_Db_Adapter_Pdo_Mysql.

Это php-класс Magento для работы с базой данных MySQL.

Поменяем настройки(значения переменных) в этом классе.

protected $_debug               = true;

так подключим «дебаг»(отладку) — логированние SQL-запросов к базе данных Magento.

Перезагрузим страницу сайта на Magento.

И проверим файл var/debug/pdo_mysql.log , файл-лог должен создаться в папке  var/debug. Если файла нет или пустой, проверьте права для папки/файла.

Также проверьте переменную $_debugFile

protected $_debugFile           = 'var/debug/pdo_mysql.log';

где указывается адрес для лог-файла, можно также указать другое название для лог-файла.

Если файл лога создался то увидите список SQL запросов.

Как видно запросов не так уж много.
Потому как в лог-файл Magento записались только те SQL запросы,  время для которых было потрачено больше чем 0.05 секунды.

Проверьте переменную $_logQueryTime, минимальное время исполнения SQL запросов которые будут записаны в лог-файл.
Изменим $_logQueryTime, установим значение 0 — будут записыватся все SQL запросы.

protected $_logQueryTime        = 0;

Попробуем снова открыть сайт на Magento. Файл лога стал больше.

Также можно изменить переменную $_logAllQueries, записывать в лог-файл все SQL запросы Magento, при включении будет игнорировать значение для переменной $_logQueryTime.

protected $_logAllQueries       = true;

Также можно узнать какие php-классы Magento делают SQL запросы к базе данных Magento. Переменная $_logCallStack позволит логировать так называемый stack.

protected $_logCallStack        = true;

Снова перезагрузим страничку, и увидим какой  бооольшой  лог файл….
отдебажили Magento )))))

Magento 1.*
  • http://www.ecomdev.org Ivan Chepurnyi

    А если запускать скрипты из консоли то файлы с логами храняться в относительном пути к текущей. К примеру когда находишься в директории «shell» то все логи будут в ней же а не в рутовой папке для Magento.

  • http://nikolay.lisienko.com Nikolay Lisienko

    можно воспользоваться специальной программой профайлинга для девелоперов http://www.profilesql.com