В прошлой статье мы рассмотрели способ поиска ошибок в xml-файлах при помощи логов Magento. Сегодня мы подробнее рассмотрим малоизвестные функции Varien библиотеки Magento, которые позволяют вывести в лог запросы к базе данных.

Эти функции не только позволяют расширить понимание механизмов взаимодействия с базой, но и помогает отлавливать медленно выполняющиеся запросы и другие проблемы с производительностью.


Для включения функции откроем файл lib/Varien/Db/Adapter/Pdo/Mysql.php


lib/Varien/Db/Adapter/Pdo/Mysql.php

со строки 96 вы увидите следующие переменные:


* Write SQL debug data to file
     *
     * @var bool
     */
    protected $_debug               = false;
 
     /**
     * Minimum query duration time to be logged
     *
     * @var unknown_type
     */
    protected $_logQueryTime        = 0.05;
 
     /**
     * Log all queries (ignored minimum query duration time)
     *
     * @var bool
     */
    protected $_logAllQueries       = false;
 
     /**
     * Add to log call stack data (backtrace)
     *
     * @var bool
     */
    protected $_logCallStack        = false;
 
     /**
     * Path to SQL debug data log
     *
     * @var string
     */
     protected $_debugFile           = 'var/debug/pdo_mysql.log';

Хотя все переменные достаточно хорошо описаны в документации, все-же рассмотрим их подробнее:


    protected $_debug               = false;

- Включение/Отключение отладки SQL. Установите его в "true", чтобы включить.


    protected $_logQueryTime        = 0.05;

- Это задает минимальное время в секундах, которое будет определять, какие запросы нужно логировать. Это полезно для поиска медленных запросов, которые могут отразиться на результатах работы вашего магазина. Стандартные 0.05 секунды это маловато. Я рекомендую увеличить его до 1,0 секунд, если вы хотите найти действительно медленные запросы.


    protected $_logAllQueries       = false;

- Эта переменная говорит Magento не обращать внимания на предыдущий вариант и логировать все запросы. Magento часто обращается к базе данных, так что включение этой опции будет генерировать большое количество данных. Если вы просто хотите получить общее представление об операциях с базой данных, которые происходят при загрузке определенной страницы, вы можете включить эту опцию, установив её на «true»


    protected $_logCallStack        = false;

- Этот параметр полезен при отладке пользовательских и сторонних модулей, потому что в дополнение к запросам, он записывает трассировку из методов, которые вызывают запрос. Опять же, если у вас включена опция регистрировать все запросы, эта опция будет производить еще больше данных.


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

- И, наконец, у вас есть возможность изменить расположение файла отладки.


Если вы решите включить эту функцию для отладки магазина Magento, убедитесь, что вы ограничили доступ к вашему сайту, редактируя соответствующий раздел файла .htaccess. В противном случае вы получите смесь ваших и пользовательских запросов:


############################################
## By default allow all access
 
    #Order allow,deny
    #Allow from all
 Order deny,allow
 Deny from all
 Allow from YOUR.IP.ADDR.ESS

Кроме того, убедитесь, что вы не забыли выключить отладку как только вы закончили поиск неисправностей, либо размер файла журнала станет проблемой сам по себе. Надеюсь, это поможет вам поймать парочку запросов, замедляющих работу вашего сайта.

Удачной охоты!