Symfony Profiler查询堆栈跟踪

时间:2018-04-03 13:51:38

标签: symfony doctrine sonata-admin

我有一个使用Symfony 3.4和Sonata Admin创建的门户网站。

在特定的管理页面中,有很多生成的查询。我使用分析器跟踪它们但我看不到它们生成的 where

enter image description here

使用不同的ID重复执行相同的查询很多次:

enter image description here

有没有办法了解哪里生成它们?我看到那篇帖子,目前似乎无法做到:

https://github.com/doctrine/DoctrineBundle/issues/722

我不能在分析器中的某个地方放一个dump/die来获取特定的行吗?

4 个答案:

答案 0 :(得分:4)

我刚发现这个插件正在完成我的需要:

https://github.com/VincentChalnot/DoctrineDebugBundle

enter image description here

它似乎工作正常,它显示了查询中的堆栈跟踪。

答案 1 :(得分:1)

这不是一项简单的任务,但我认为你可以通过调试日志信息,学说查询和执行时间表获得一些提示。

enter image description here

在时间轴中,您可以看到学说执行查询的时间,以及来自Doctrine和debug的信息,您可以加入执行时间和执行的查询。

我希望此信息可以帮助您

答案 2 :(得分:1)

自v1.11.0起,Doctrine Bundle可以在Symfony Profiler中显示查询回溯。 这可能有助于查找导致特定查询被执行的代码。

此功能默认情况下处于禁用状态,但是您可以在主义连接设置中使用[{ "id": 1, "hobby": "Playing Guitar, and Basketball" }, { "id": 2, "hobby": null }] 配置来启用它。

有关更多信息,请参见https://symfony.com/blog/new-in-doctrinebundle-1-11-0#store-backtraces-when-profiling-queries

答案 3 :(得分:0)

看起来没有简单的方法来跟踪查询启动器,但我发现以下帖子解释了为什么你可能会看到多个类似的查询: Doctrine2 in Symfony2: How can I see which object-call leads into a query?