Symfony Profiler 查询堆栈跟踪
Symfony Profiler Query Stack Trace
我有一个用 Symfony 3.4 和 Sonata Admin 制作的门户。
在特定的管理页面中有很多生成的查询。我使用探查器追踪它们,但我看不到它们生成的 where:
同一个查询用不同的 ID 重复了很多次:
有没有办法了解它们是在哪里生成的?我看到了post,目前似乎无法做到:
https://github.com/doctrine/DoctrineBundle/issues/722
我不能只在探查器中的某处放置一个 dump/die
来获取特定行吗?
这不是一项简单的任务,但我认为您可以通过调试日志信息、原则查询和执行时间表获得一些提示。
在timeline中你可以看到doctrine什么时候执行查询,通过Doctrine和debug的信息你可以加入执行时间和执行的查询。
希望以上信息对您有所帮助
似乎没有简单的方法来跟踪查询发起者,但我发现以下内容 post 解释了您可能会看到多个类似查询的原因:
Doctrine2 in Symfony2: How can I see which object-call leads into a query?
我刚找到这个插件,它正是我需要的:
https://github.com/VincentChalnot/DoctrineDebugBundle
它似乎工作正常,它显示了来自查询的堆栈跟踪。
从 v1.11.0 开始,Doctrine Bundle 可以在 Symfony Profiler 中显示查询回溯。
这可能有助于查找导致执行特定查询的代码。
该功能默认情况下处于禁用状态,但您可以使用学说连接设置中的 profiling_collect_backtrace
配置启用它。
有关详细信息,请参阅 https://symfony.com/blog/new-in-doctrinebundle-1-11-0#store-backtraces-when-profiling-queries。
我有一个用 Symfony 3.4 和 Sonata Admin 制作的门户。
在特定的管理页面中有很多生成的查询。我使用探查器追踪它们,但我看不到它们生成的 where:
同一个查询用不同的 ID 重复了很多次:
有没有办法了解它们是在哪里生成的?我看到了post,目前似乎无法做到:
https://github.com/doctrine/DoctrineBundle/issues/722
我不能只在探查器中的某处放置一个 dump/die
来获取特定行吗?
这不是一项简单的任务,但我认为您可以通过调试日志信息、原则查询和执行时间表获得一些提示。
在timeline中你可以看到doctrine什么时候执行查询,通过Doctrine和debug的信息你可以加入执行时间和执行的查询。
希望以上信息对您有所帮助
似乎没有简单的方法来跟踪查询发起者,但我发现以下内容 post 解释了您可能会看到多个类似查询的原因: Doctrine2 in Symfony2: How can I see which object-call leads into a query?
我刚找到这个插件,它正是我需要的:
https://github.com/VincentChalnot/DoctrineDebugBundle
它似乎工作正常,它显示了来自查询的堆栈跟踪。
从 v1.11.0 开始,Doctrine Bundle 可以在 Symfony Profiler 中显示查询回溯。 这可能有助于查找导致执行特定查询的代码。
该功能默认情况下处于禁用状态,但您可以使用学说连接设置中的 profiling_collect_backtrace
配置启用它。
有关详细信息,请参阅 https://symfony.com/blog/new-in-doctrinebundle-1-11-0#store-backtraces-when-profiling-queries。