首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel (4)检索查询堆栈跟踪

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

Stack Overflow用户
提问于 2016-08-09 18:11:35
回答 3查看 380关注 0票数 0

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

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

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

我该怎么做呢?

我使用的是laravel 4,最好使用laravel 4的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-21 18:27:13

我使用调试栏(https://github.com/barryvdh/laravel-debugbar)。在配置文件(application/ config /debugbar.php)中,您可以将选项'backtrace‘设置为true。

代码语言:javascript
复制
'options' => [
    'auth' => [
        'show_name' => false,   
    ],
    'db' => [
        'with_params'       => true,   
        'timeline'          => false,  
        **'backtrace'         => true,**  
        'explain' => [                 
            'enabled' => false,
            'types' => ['SELECT'],     
        ],
        'hints'             => true,    
    ],

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-08-09 19:15:23

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

代码语言:javascript
复制
Debugbar::startMeasure('render','Time for rendering');
suspectedMethod();
Debugbar::stopMeasure('render');
票数 0
EN

Stack Overflow用户

发布于 2016-08-09 19:24:59

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

代码语言:javascript
复制
Event::listen('illuminate.query', function($query) {
    Log::info('Query ran', debug_backtrace());
});

您可以在app/start/global.php中注册此监听器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38847941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档