大規模な php アプリケーションがあり、遅い sql クエリをデバッグしようとしています。実際に sql クエリを呼び出したファイルを次のように自動コメントする機能が必要です。
"select /* filename.php line 234*/ `ID`,`Email`, `NickName`, `AlertBusiness`,`City` from People where ?=? and limit ?,?"
/* filename.php 行 234*/ が動的に挿入されます。おそらく
PHP には、http://php.net/manual/en/function.debug-print-backtrace.php という debug_backtrace があります。
手動で行うことができます:
<?php
$query = sprintf("INSERT INTO EventLog (Trace) VALUES ('%s')",
mysql_real_escape_string(join("\n", debug_backtrace())) );
mysql_query($query);
?>
しかし、db ドライバーのような、より中心的なものを期待していました。
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を最適にデバッグするにはどうすればよいですか?