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

问题描述 投票:0回答:3

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

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

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

我该怎么做?

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

laravel laravel-4
3个回答
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,    
    ],

希望这个帮助。


0
投票

试试laravel-debugbar,它将显示在当前视图上执行的查询,接下来你可以尝试在这种类型的括号中找到插入可疑部分的慢速代码:

Debugbar::startMeasure('render','Time for rendering');
suspectedMethod();
Debugbar::stopMeasure('render');

0
投票

要执行所需操作,可以创建一个事件侦听器,每次运行查询时都会记录调用堆栈。

Event::listen('illuminate.query', function($query) {
    Log::info('Query ran', debug_backtrace());
});

你可以在app/start/global.php中注册这个监听器

© www.soinside.com 2019 - 2024. All rights reserved.