能审计 PHP 程序 SQL 执行情况的包

2018-06-24 19:56:45 +08:00
 helloiac

不知标题表达是否到位,就是想问有没有现成的包可以提供这样的功能:记录下从接收请求到做出响应的过程中,所有被执行的 SQL 语句以及执行时间等情况,类似 WordPress 中常见的。WordPrss 是通过钩子实现的,没有钩子机制可能做到这个吗?

我对 PHP 不熟,写的程序没有用框架,框架中估计会有这样的功能设计,不知有无独立的包可以灵活引入使用,并实现这样的功能?

1346 次点击
所在节点    问与答
8 条回复
feiyuanqiu
2018-06-24 20:01:21 +08:00
helloiac
2018-06-24 20:22:05 +08:00
@feiyuanqiu 谢谢!这个够用了。
changwei
2018-06-24 20:49:24 +08:00
直接用 general_log 最好
zjsxwc
2018-06-25 10:02:23 +08:00
主流的 orm 都有吧,我用 doctrine 可以
helloiac
2018-06-25 15:11:06 +08:00
@changwei 谢谢!我想有个能便捷地在页面查看,从而方便跟踪、调试的工具,general_log 这个看了下有点不方便,要切换窗口,且不容易界定日志行归属的执行页面。应该也不容易集成到 PHP 程序中吧?

附言里贴了个图片,不能显示,放这里辅助说明一下。

===

Wordpress 用 query monitor 插件后的是这样的,如果有类似的方便实用的最好了。

顶部工具条:
![20180625150820.png]( https://i.loli.net/2018/06/25/5b309514f076d.png)

查询的情况:
![20180625150615.png]( https://i.loli.net/2018/06/25/5b3094986deb3.png)
helloiac
2018-06-25 15:13:05 +08:00
@zjsxwc 是的,我想知道有没有可以方便集成到未用框架的项目中的。
zjsxwc
2018-06-25 16:22:14 +08:00
@helloiac

看了下,doctrine 的 dbal 层,提供了 logger ( Doctrine\DBAL\Logging\DebugStack ),在配置 dbal 后把这个 logger 提供给 doctrine,然后在你页面结束时,通过这个 logger 对象的 queries 属性获取调用的 sql 记录等


参考:
http://srcmvn.com/blog/2011/11/10/doctrine-dbal-query-logging-with-monolog-in-silex
helloiac
2018-06-25 22:31:48 +08:00
@changwei 配置 clockwork 有些麻烦,还没搞定,这个 general_log 实用,看似麻烦些,但仔细看日志已经能发现很多需要改进的地方了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465473

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX