如何正确地将 CakePHP 的调试工具包添加到报告工具中?
How can I properly add CakePHP's Debug Kit to a reporting tool?
我是 Debug Kit 的新手,我花了一天时间研究它,查看它 source-code,阅读它以收集尽可能多的信息。尽管我不是这个插件的专家,但我想我已经准备好在这里问一个关于它的问题了。
文档 link:https://book.cakephp.org/debugkit/4/en/index.html
在处理一组 inter-related 项目时,我被要求研究如何添加 SQL debugger/logger 功能以及 UI,希望使用项目中已有解决方案的模型。
在研究这个工具时,我发现它是 CakePHP 的调试工具包,有一些 project-specific 定制。
现在,将它引入 problem-space 我被问到是一个有趣的问题,因为它是一个报告 problem-space,其工作方式如下:
- 用户设置需要什么报告
- 用户完成报告设置后,完成报告并发出生成报告的命令
- 报告进入报告queue
- 一旦报告到达 queue 的头部,它就会被处理
- 在处理过程中,可能会执行许多 SQL 操作
- 报告处理完成后,将在服务器上生成一个文件
- 用户稍后可以访问his/her 报告
- 它们显示为 UI 中的条目,可在其中下载
我想描述和基准化的是当报告位于 queue 的头部并正在处理时发生的情况。
虽然这种情况可能涉及很多物理服务器和不同的数据库,但从这个问题的角度来看,这种复杂性是无关紧要的,我很乐意处理。让我们简化它,为了简单起见,假设我有一个报告 table 并且每个报告都有自己的 ID。
我想按如下方式使用调试工具包:
- 在生成报告时记录所有 MySQL 命令
- 以某种方式知道要link编辑到
的报告 ID
- 当我加载报告页面时,我想要一些按钮或任何 UI 工具,我可以使用它来打开显示 benchmarking/profiling 信息的对话框
- 理想情况下,我希望为 UI 上显示的所有报告标题提供这样一个 UI 工具,如果我必须为此目的实施自己的 UI,那么我很高兴这样做
- 我还想向此 profiler/benchmarker 添加自定义日志,例如报告状态通知或复杂操作有 started/finished
我的问题如下:有没有办法在我上面描述的use-case中使用Debug Kit,如果可以,如何使用?
原来是
$connection->fullDebug = true;
启用 SQL 日志记录,然后再启用
$connection->getLog(true);
returns 所有需要的信息。 $connection
需要是一个 DboSource 实例。
我是 Debug Kit 的新手,我花了一天时间研究它,查看它 source-code,阅读它以收集尽可能多的信息。尽管我不是这个插件的专家,但我想我已经准备好在这里问一个关于它的问题了。
文档 link:https://book.cakephp.org/debugkit/4/en/index.html
在处理一组 inter-related 项目时,我被要求研究如何添加 SQL debugger/logger 功能以及 UI,希望使用项目中已有解决方案的模型。
在研究这个工具时,我发现它是 CakePHP 的调试工具包,有一些 project-specific 定制。
现在,将它引入 problem-space 我被问到是一个有趣的问题,因为它是一个报告 problem-space,其工作方式如下:
- 用户设置需要什么报告
- 用户完成报告设置后,完成报告并发出生成报告的命令
- 报告进入报告queue
- 一旦报告到达 queue 的头部,它就会被处理
- 在处理过程中,可能会执行许多 SQL 操作
- 报告处理完成后,将在服务器上生成一个文件
- 用户稍后可以访问his/her 报告
- 它们显示为 UI 中的条目,可在其中下载
我想描述和基准化的是当报告位于 queue 的头部并正在处理时发生的情况。
虽然这种情况可能涉及很多物理服务器和不同的数据库,但从这个问题的角度来看,这种复杂性是无关紧要的,我很乐意处理。让我们简化它,为了简单起见,假设我有一个报告 table 并且每个报告都有自己的 ID。
我想按如下方式使用调试工具包:
- 在生成报告时记录所有 MySQL 命令
- 以某种方式知道要link编辑到 的报告 ID
- 当我加载报告页面时,我想要一些按钮或任何 UI 工具,我可以使用它来打开显示 benchmarking/profiling 信息的对话框
- 理想情况下,我希望为 UI 上显示的所有报告标题提供这样一个 UI 工具,如果我必须为此目的实施自己的 UI,那么我很高兴这样做
- 我还想向此 profiler/benchmarker 添加自定义日志,例如报告状态通知或复杂操作有 started/finished
我的问题如下:有没有办法在我上面描述的use-case中使用Debug Kit,如果可以,如何使用?
原来是
$connection->fullDebug = true;
启用 SQL 日志记录,然后再启用
$connection->getLog(true);
returns 所有需要的信息。 $connection
需要是一个 DboSource 实例。