Laravel(4)检索查询堆栈跟踪

时间:2016-08-09 10:11:35

标签: laravel laravel-4

我需要优化我的Laravel查询并查看许多重复项。

我记录了它们并看到了SQL,但我找不到生成它们的调用者。

我需要的是与每个查询相关联的某种堆栈跟踪,这样我就可以识别我的代码中启动它们并优化它的点。

我该怎么做?

我正在使用laravel 4,laravel 4的答案是首选

3 个答案:

答案 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

中注册此侦听器