按我正在使用的特定代码检查所有查询:
在Varien_Db_Adapter_Pdo_Mysql中将变量$ _debug从protected修改为public
对$ _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;
还有其他更优雅的解决方案吗?
答案 0 :(得分:1)
Magento有一个扩展,我个人长期使用(适用于社区和EE):
https://github.com/madalinoprea/magneto-debug
这会让你 - 检查所有请求 - 查看为请求执行的所有SQL查询 - 查看执行的所有布局句柄 - 还有更多
答案 1 :(得分:1)
您可以在How do I print all the queries in Magento?
使用我的答案的变体不是在import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Prog1
{
public static void stop() throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s1=br.readLine();
int x=Integer.parseInt(s1);
int ar[]=new int[x];
int k=0;
for(int i=0;i<x;i++)
{
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
String s2=br1.readLine();
int p=Integer.parseInt(s2);
ar[k++]=p;
}
for(int m=0;m<x;m++)
{
System.out.println(ar[m]);
}
for(int y=0;y<x;)
{
if(ar[y]!=42)
{
System.out.println(ar[y]);
y++;
}
else
{
break;
}
}
}
public static void main(String s[]) throws IOException
{
stop();
}
}
中全局激活探查器,而是在要测试的代码之前和之后添加这些:
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);
答案 2 :(得分:0)
您可以在请求页面时打开MySQL日志文件并监视已记录的查询。例如,如果您使用的是Linux,请使用命令tail -F以实时方式查看日志文件中的所有更改。 / p>
以debian:tail-F /var/log/mysql.log