首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP、自动SQL注释、数据库调试哪些文件和行调用sql

问PHP、自动SQL注释、数据库调试哪些文件和行调用sql
EN

Stack Overflow用户
提问于 2014-08-09 00:36:51
回答 1查看 228关注 0票数 2

我们有一个大型的php应用程序,并试图调试缓慢的sql查询,我们希望能够自动注释实际调用sql查询的文件,如下所示:

代码语言:javascript
复制
"select /* filename.php line 234*/ `ID`,`Email`, `NickName`, `AlertBusiness`,`City` from People where ?=? and limit ?,?"

其中动态插入/* filename.php行234*/。很可能

在php中有一个debug_backtrace,http://php.net/manual/en/function.debug-print-backtrace.php

它可以手动完成此操作:

代码语言:javascript
复制
<?php

$query = sprintf("INSERT INTO EventLog (Trace) VALUES ('%s')",
    mysql_real_escape_string(join("\n", debug_backtrace())) );
mysql_query($query);

?>

但希望有更核心的东西,比如数据库驱动程序。

MediaWiki也有类似的功能。http://www.mediawiki.org/wiki/Manual:How_to_debug

代码语言:javascript
复制
You can also enable backtrace on SQL error by setting $wgShowDBErrorBacktrace:

$wgShowDBErrorBacktrace = true;"

PDO驱动程序有一个转储语句,但这只是一个查询,而不是谁称它为http://php.net/manual/en/pdostatement.debugdumpparams.php

如何在运行sql的php页面上下文中调试sql?

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 00:23:41

这可能太简单了,但你可以在MySQL中打开slow query log,找到最慢的10-25个查询。

有了慢查询列表之后,您可以使用Percona Toolkit来分析它们。

我会使用ack/ack-grep来找到罪魁祸首以及它所在的地方。如果您有大量直接调用MySQL的文件,那么通过一个将MySQL注释附加到查询的方法来路由这些文件将是非常痛苦的,而且可能不是最有效的方法。

如果您有多个应用程序连接到同一个数据库,那么最好也将用户分开,这样您就可以确定哪些用户/应用程序正在消耗数据库资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25208149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档