我需要优化我的Laravel查询并查看许多重复项。
我记录了它们并看到了SQL,但我找不到生成它们的调用者。
我需要的是与每个查询相关联的某种堆栈跟踪,这样我就可以识别我的代码中启动它们并优化它的点。
我该怎么做?
我正在使用laravel 4,laravel 4的答案是首选
答案 0 :(得分:1)
我使用调试栏(https://github.com/barryvdh/laravel-debugbar)。 在配置文件(application / config / debugbar.php)中,可以将选项'backtrace'设置为true。
'options' => [
'auth' => [
'show_name' => false,
],
'db' => [
'with_params' => true,
'timeline' => false,
**'backtrace' => true,**
'explain' => [
'enabled' => false,
'types' => ['SELECT'],
],
'hints' => true,
],
希望获得帮助。
答案 1 :(得分:0)
尝试laravel-debugbar,它将显示在当前视图上执行的查询,接下来您可以尝试在此类括号中找到插入可疑部分的慢速代码:
Debugbar::startMeasure('render','Time for rendering');
suspectedMethod();
Debugbar::stopMeasure('render');
答案 2 :(得分:0)
要执行您想要的操作,您可以创建一个事件侦听器,每次运行查询时都会记录调用堆栈。
Event::listen('illuminate.query', function($query) {
Log::info('Query ran', debug_backtrace());
});
您可以在app/start/global.php