我需要优化我的Laravel查询,并看到许多重复项。
我记录了它们并看到了SQL,但我找不到生成它们的调用者。
我需要的是与每个查询相关联的某种堆栈跟踪,这样我就可以识别代码中启动它们的点并对其进行优化。
我该怎么做呢?
我使用的是laravel 4,最好使用laravel 4的答案。
发布于 2019-04-21 18:27:13
我使用调试栏(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,
],希望这能有所帮助。
发布于 2016-08-09 19:15:23
试一试laravel-debugbar,它会显示在当前视图上执行的查询,接下来你可以尝试找到在这种类型的括号中插入可疑部分的那段缓慢的代码:
Debugbar::startMeasure('render','Time for rendering');
suspectedMethod();
Debugbar::stopMeasure('render');发布于 2016-08-09 19:24:59
要执行所需操作,可以创建一个事件侦听器,该侦听器在每次运行查询时记录调用堆栈。
Event::listen('illuminate.query', function($query) {
Log::info('Query ran', debug_backtrace());
});您可以在app/start/global.php中注册此监听器
https://stackoverflow.com/questions/38847941
复制相似问题