Câu trả lời:
Nếu bạn muốn chắc chắn tất cả SQL thực sự được ghi lại, tôi khuyên bạn nên sử dụng phần mềm của bên thứ ba:
Thay vào đó, cách tiếp cận Magento / Varien bản địa có thể là cách tiếp cận sau:
lib/Varien/Db/Adapter/Pdo/Mysql.php
true
(dòng 103)var/debug/pdo_mysql.log
Ở đây dòng để được thay đổi: (ý kiến là tự giải thích)
/**
* Write SQL debug data to file
*
* @var bool
*/
protected $_debug = true;
/**
* Minimum query duration time to be logged
*
* @var float
*/
protected $_logQueryTime = 0.05;
/**
* Log all queries (ignored minimum query duration time)
*
* @var bool
*/
protected $_logAllQueries = true;
/**
* Add to log call stack data (backtrace)
*
* @var bool
*/
protected $_logCallStack = true;
Nhật ký được sản xuất giống như sau:
## 2014-06-26 12:18:47
## 10258 ## QUERY
SQL: SELECT `adminnotification_inbox`.* FROM `adminnotification_inbox` WHERE (title = 'Customize your order and invoice numbers to protect your sales using Order Number Customizer by XTENTO.') AND (url = 'http://www.xtento.com/magento-extensions/order-number-customizer.html?utm_source=feed&utm_medium=feed&utm_campaign=order_number_customizer')
AFF: 1
TIME: 0.0008
Trong trường hợp bạn đã bật, $_logCallStack
bạn cũng sẽ có một phần TRACE
TRACE: #1 Varien_Db_Adapter_Pdo_Mysql#00000000644036ff00007f14137095e6#->_debugStat(2, 'SELECT `adminnot...', array(), &Varien_Db_Statement_Pdo_Mysql#000000006440371700007f14137095e6#) called at [lib/Varien/Db/Adapter/Pdo/Mysql.php:424]
#2 Varien_Db_Adapter_Pdo_Mysql#00000000644036ff00007f14137095e6#->query(&Varien_Db_Select#000000006440371800007f14137095e6#, array()) called at [lib/Zend/Db/Adapter/Abstract.php:753]
#3 Varien_Db_Adapter_Pdo_Mysql[Zend_Db_Adapter_Abstract]#00000000644036ff00007f14137095e6#->fetchRow(&Varien_Db_Select#000000006440371800007f14137095e6#) called at [app/code/core/Mage/AdminNotification/Model/Resource/Inbox.php:116]
#4 Mage_AdminNotification_Model_Resource_Inbox#00000000644034c500007f14137095e6#->parse(&Mage_AdminNotification_Model_Inbox#00000000644034e900007f14137095e6#, array(array('severity' => 4, 'date_added' => '2013-10-23 13:00...', 'title' => 'Customizing your...', 'description' => 'Easily add new c...', 'url' => 'http://www.xtent...'), array('severity' => 4, 'date_added' => '2014-04-09 17:00...', 'title' => 'Customize your o...', 'description' => 'Customize your M...', 'url' => 'http://www.xtent...'), array('severity' => 4, 'date_added' => '2014-05-06 17:00...', 'title' => 'Process orders i...', 'description' => 'Process all your...', 'url' => 'http://www.xtent...'))) called at [app/code/core/Mage/AdminNotification/Model/Inbox.php:118]
#5 Mage_AdminNotification_Model_Inbox#00000000644034e900007f14137095e6#->parse(array(array('severity' => 4, 'date_added' => '2013-10-23 13:00...', 'title' => 'Customizing your...', 'description' => 'Easily add new c...', 'url' => 'http://www.xtent...'), array('severity' => 4, 'date_added' => '2014-04-09 17:00...', 'title' => 'Customize your o...', 'description' => 'Customize your M...', 'url' => 'http://www.xtent...'), array('severity' => 4, 'date_added' => '2014-05-06 17:00...', 'title' => 'Process orders i...', 'description' => 'Process all your...', 'url' => 'http://www.xtent...'))) called at [app/code/local/Xtento/XtCore/Model/Feed.php:57]
#6 Xtento_XtCore_Model_Feed#000000006440348500007f14137095e6#->checkUpdate(&Varien_Event_Observer#00000000644034d900007f14137095e6#) called at [app/code/core/Mage/Core/Model/App.php:1338]
#7 Mage_Core_Model_App#00000000644036ef00007f14137095e6#->_callObserverMethod(&Xtento_XtCore_Model_Feed#000000006440348500007f14137095e6#, 'checkUpdate', &Varien_Event_Observer#00000000644034d900007f14137095e6#) called at [app/code/core/Mage/Core/Model/App.php:1317]
#8 Mage_Core_Model_App#00000000644036ef00007f14137095e6#->dispatchEvent('controller_actio...', array('controller_actio...' => &Fishpig_Wordpress_Adminhtml_WordpressController#000000006440364a00007f14137095e6#)) called at [app/Mage.php:451]
#9 Mage::dispatchEvent('controller_actio...', array('controller_actio...' => &Fishpig_Wordpress_Adminhtml_WordpressController#000000006440364a00007f14137095e6#)) called at [app/code/core/Mage/Core/Controller/Varien/Action.php:528]
#10 Fishpig_Wordpress_Adminhtml_WordpressController[Mage_Core_Controller_Varien_Action]#000000006440364a00007f14137095e6#->preDispatch() called at [app/code/core/Mage/Adminhtml/Controller/Action.php:160]
#11 Fishpig_Wordpress_Adminhtml_WordpressController[Mage_Adminhtml_Controller_Action]#000000006440364a00007f14137095e6#->preDispatch() called at [app/code/core/Mage/Core/Controller/Varien/Action.php:408]
#12 Fishpig_Wordpress_Adminhtml_WordpressController[Mage_Core_Controller_Varien_Action]#000000006440364a00007f14137095e6#->dispatch('checkVersion') called at [app/code/core/Mage/Core/Controller/Varien/Router/Standard.php:250]
#13 Mage_Core_Controller_Varien_Router_Admin[Mage_Core_Controller_Varien_Router_Standard]#00000000644036ae00007f14137095e6#->match(&Mage_Core_Controller_Request_Http#000000006440365c00007f14137095e6#) called at [app/code/core/Mage/Core/Controller/Varien/Front.php:176]
#14 Mage_Core_Controller_Varien_Front#000000006440365700007f14137095e6#->dispatch() called at [app/code/core/Mage/Core/Model/App.php:354]
#15 Mage_Core_Model_App#00000000644036ef00007f14137095e6#->run(array('scope_code' => '', 'scope_type' => 'store', 'options' => array())) called at [app/Mage.php:687]
#16 Mage::run('', 'store') called at [index.php:87]
Kích hoạt Zend SQL Profiler với nút sau trong app/etc/local.xml
<resources>
<default_setup>
<connection>
<profiler>1</profiler>
Sau đó, bạn có thể truy cập trình hồ sơ ở đâu đó trong mã của mình và truy xuất rất nhiều thông tin về tất cả các truy vấn đã thực hiện:
$profiler = Mage::getSingleton('core/resource')->getConnection('core_write')->getProfiler();
Để đơn giản xuất tất cả các truy vấn:
print_r($profiler->getQueryProfiles());
Bạn có thể thêm hai dòng này vào cuối index.php
để xem tất cả các truy vấn ở cuối mỗi trang. Xin lưu ý rằng điều này sẽ phá vỡ các yêu cầu AJAX trả về phản hồi JSON, vì vậy bạn có thể xem xét ghi nhật ký các truy vấn thay vì in chúng, với mã này (một lần nữa, thêm nó vào cuối index.php
):
$profiler = Mage::getSingleton('core/resource')->getConnection('core_write')->getProfiler();
Mage::log(print_r($profiler->getQueryProfiles(), true), null, 'queries.log', true);
Sau đó, bạn sẽ tìm thấy tất cả các truy vấn trong var/log/queries.log
Đừng quên xóa các dòng một lần nữa sau khi bạn gỡ lỗi xong!
Tôi không chắc chắn 100% điều này sẽ bắt được mọi truy vấn, nhưng hầu hết đều chạy qua phương thức truy vấn Zend_Db_Ad CHƯƠNG_Abauge phương thức truy vấn trong
lib / Zend / Db / Adaptor / Tóm tắt.php
Với ý nghĩ đó, bạn có thể tạm thời thêm một số câu lệnh gỡ lỗi (vào bản sao bạn tạo
ứng dụng / mã / cục bộ / Pháp sư
để được an toàn)
public function query($sql, $bind = array())
{
// connect to the database if needed
$this->_connect();
// is the $sql a Zend_Db_Select object?
if ($sql instanceof Zend_Db_Select) {
if (empty($bind)) {
$bind = $sql->getBind();
}
$sql = $sql->assemble();
}
echo '$sql' . "\n<br />\n";
var_dump($bind);
Nếu bạn có quyền truy cập vào máy chủ mysql và bạn không có các dự án khác chạy truy vấn, bạn có thể thử thêm nhật ký chung từ mysql. Xem ở đây về cách thực hiện /programming/6479107/how-to-enable-mysql-query-log vì nó ghi tất cả các truy vấn mà tệp nhật ký có thể lớn rất nhanh, vì vậy hãy chắc chắn bật nó tắt sau khi bạn hoàn thành nó