Как проверить все запросы, выполняемые определенным кодом в Magento
Чтобы проверить все запросы на определенный фрагмент кода, я использую:
-
Измените с защищенного на public значение переменной $_debug в Varien_Db_Adapter_Pdo_Mysql
-
Сделайте то же самое для $_logAllQueries
-
Добавьте это перед выполнением кода:
$adapter = Mage::getSingleton('core/resource')->getConnection('core_write');
$adapter->_debug = true;
$adapter->_logAllQueries = true;
-
Добавьте это после кода
$adapter->_debug = false;
$adapter->_logAllQueries = false;
поэтому ваш окончательный код будет выглядеть следующим образом:
$adapter = Mage::getSingleton('core/resource')->getConnection('core_write');
$adapter->_debug = true;
$adapter->_logAllQueries = true;
Mage::getModel('catalog/product')->load(1);
$adapter->_debug = false;
$adapter->_logAllQueries = false;
Есть ли еще более элегантное решение?
Ответы
Ответ 1
Существует расширение для Magento, которое я лично использую с давних времен (работает как для сообщества, так и для EE):
http://www.magentocommerce.com/magento-connect/magneto-debug.html
Это позволит вам
- Проверить все запросы
- Просмотреть все SQL-запросы, выполненные для запроса
- Просмотреть все выполненные макеты
- и многое другое
Ответ 2
Вы можете использовать вариант ответа на Как распечатать все запросы в Magento?
Вместо того, чтобы активировать профайлер глобально в local.xml
, добавьте их до и после кода, который вы хотите проверить:
$profiler = Mage::getSingleton('core/resource')->getConnection('core_write')->getProfiler();
$profiler->setEnabled(true);
// ...
Mage::log(print_r($profiler->getQueryProfiles(), true), null, 'queries.log', true);
$profiler->setEnabled(false);
Затем вы найдете запросы в var/log/queries.log
Ответ 3
Вы можете просто открыть файл журнала MySQL и контролировать зарегистрированные запросы при запросе страницы. Если вы используете Linux, например, используйте команду tail -F, чтобы просмотреть все изменения в файле журнала в реальном времени.
Попробуйте это, например, на debian: tail-F /var/log/mysql.log