【问题标题】:How can I properly add CakePHP's Debug Kit to a reporting tool?如何正确地将 CakePHP 的调试工具包添加到报告工具中?
【发布时间】:2022-01-03 07:02:09
【问题描述】:

我是 Debug Kit 的新手,这一天都在研究它,查看它的源代码,阅读它以收集尽可能多的信息。尽管我不是这个插件的专家,但我想我已经准备好在这里就它提出一个问题了。

文档链接:https://book.cakephp.org/debugkit/4/en/index.html

在处理一组相互关联的项目时,我被要求研究如何使用项目中已经存在的解决方案模型来添加 SQL 调试器/记录器功能以及 UI。

在研究这个工具时,我发现它是 CakePHP 的调试工具包,带有一些特定于项目的自定义。

现在,将它引入我被问到的问题空间是一个有趣的问题,因为它是一个报告问题空间,其工作原理如下:

  • 用户设置需要哪些报告
  • 用户完成报告设置后,完成报告并发出生成报告的命令
  • 报告进入报告队列
  • 一旦报告到达队列的头部,它就会被处理
  • 在处理它时,可能正在执行许多 SQL 操作
  • 报告处理完成后,将在服务器上生成一个文件
  • 用户可以稍后访问他/她的报告
  • 它们在 UI 中显示为条目,可供下载

我想要分析和基准化的是当报告排在队列的最前面并正在处理时会发生什么。

尽管在这种情况下可能涉及许多物理服务器机器和不同的数据库,但从这个问题的角度来看,这种复杂性是无关紧要的,我很乐意处理它。让我们对其进行简化,为简单起见假设我有一个报告表,并且每个报告都有自己的 ID。

我想使用调试工具包如下:

  • 在生成报告时记录所有 MySQL 命令
  • 以某种方式知道要链接到的报告 ID
  • 当我加载报告页面时,我想要一些按钮或任何 UI 工具,我可以使用它来打开显示基准测试/分析信息的对话框
  • 理想情况下,我希望为 UI 上显示的所有报告标题提供这样的 UI 工具,如果我必须为此实现自己的 UI,那么我很乐意这样做
  • 我还想向此分析器/基准测试器添加自定义日志,例如报告状态通知或复杂操作已开始/完成的通知

我的问题如下:有没有办法在我上面描述的用例中使用调试工具包,如果有,怎么做?

【问题讨论】:

  • DebugKit 仅作为开发人员的调试辅助工具,不应在生产环境中运行,但您所描述的内容听起来像是您想向普通用户提供信息?
  • @ndm 这只会在开发人员测试报告时运行。假设在很长的报告内容中发生了一些错误。此时我们需要调试报表逻辑。这是艰巨的。
  • 我明白了。您是否真的想在 DebugKit 面板中显示任何内容,或者您​​只是想弄清楚它是否提供了可以重用于分析/基准测试的功能?
  • @ndm 如果有一个开箱即用的 UI 显示会很棒,但我认为这太过分了。在进行报告设置时,我有 n 个请求被发送到服务器,一旦报告的蓝图在报告队列中并最终得到处理,我就会有一组额外的 SQL 和其他命令。我需要将所有这些组合在一起。
  • @ndm 因此,最低期望是能够在 CLI 环境中运行分析并了解在此期间执行了哪些查询。由于我们是开发人员,我们可以利用原始数据,只要有一种唯一可识别的方式来收集进程执行的所有 SQL 命令,并且只收集进程执行的 SQL 命令。从这里开始,如果需要,我还可以实现 UI。如果支持更多我不会反对,但我假设插件是基于请求的,因此将相关请求粘合在一起的逻辑将由我实现。

标签: mysql cakephp reporting cakephp-debug-kit


【解决方案1】:

原来是这样

$connection->fullDebug = true;

启用 SQL 日志记录,然后再启用

$connection->getLog(true);

返回所有需要的信息。 $connection 必须是 DboSource 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2016-11-26
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多