gpt4 book ai didi

PHP、自动SQL注释、数据库调试调用sql的文件和行

转载 作者:行者123 更新时间:2023-11-29 03:34:18 25 4
gpt4 key购买 nike

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

"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

哪个可以手动完成:

<?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

You can also enable backtrace on SQL error by setting $wgShowDBErrorBacktrace:

$wgShowDBErrorBacktrace = true;"

PDO 驱动程序有一个转储语句,但那只是查询,而不是调用它的人 http://php.net/manual/en/pdostatement.debugdumpparams.php

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

最佳答案

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

在获得慢速查询列表后,您可以使用 Percona Toolkit分析它们。

我会使用 ack/ack-grep找到罪魁祸首及其住所。如果您有大量文件直接调用 MySQL,那么通过将 MySQL 注释附加/附加到查询的方法进入并路由它们会很痛苦,而且可能不是最有效的。

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

关于PHP、自动SQL注释、数据库调试调用sql的文件和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com