mysqli :: debug()は、PHPの比較的役に立たないが非常に強力なデバッグツールです。開発者は、基礎となるMySQLI拡張のデバッグ機能を有効にすることができ、それにより、PHP 8.1の後、 MySQLI :: debug()のパラメーターサポート、特により強力なカスタマイズ機能を提供するトレースオプションのパラメーターサポートがより柔軟になります。
この記事では、MySqli :: Debug() Traceオプションの使用方法と高度な構成を紹介し、いくつかの例を組み合わせて、その目的をよりよく理解するのに役立ちます。
mysqli :: debug()は、デバッグ出力を有効にするために使用される方法であり、実際にはmysqli_debug()関数のオブジェクト指向バージョンです。デバッグオプションを指定する文字列パラメーターを受け入れます。
mysqli::debug(string $options): bool
その中で、 $オプションは私たちが焦点を合わせたい焦点です - 次のようなコンマ分離されたデバッグ設定のセットは次のとおりです。
mysqli::debug("d:t:o,/tmp/client.trace")
デバッグ文字列には、いくつかの一般的なオプションが含まれます。
拒否可能なデバッグ
テナブルトレース(トレース)
o、<file>指定されたファイルにデバッグ出力を書き込みます
I、<file>指定されたファイルから構成を読み取ります
Fレコード関数呼び出し
すべての呼び出しを記録します(詳細)
nネットワーク通信コンテンツを表示します
これらのオプションを組み合わせて、MySQLI実行の詳細な監視を可能にすることができます。
サーバーの/TMPディレクトリにデバッグ情報をログに記録するとします。
<?php
mysqli::debug("d:t:o,/tmp/mysqli.trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
この構成は次のとおりです。
デバッグを有効にする( d )
追跡機能( t )を有効にする
/tmp/mysqli.trace.logに出力を保存します
mysqli::debug("d:t:F:o,/tmp/trace_func.log");
fパラメーターが有効になっている場合、ログには各mysqli関数の呼び出しスタックが含まれています。これは、パフォーマンスボトルネックの分析に特に役立ちます。
構成ファイルを読み取ることにより、事前にデバッグパラメーターを設定できます。
// config.txt コンテンツ:d:t:o,/tmp/from_config.log
mysqli::debug("i,/var/www/html/config.txt");
これにより、ハードコーディングが回避され、柔軟性が向上し、大規模なプロジェクトやデバッグ展開環境に適しています。
クライアントとサーバーの間の通信に何か問題があると思われる場合は、 nを有効にすることができます。
mysqli::debug("d:t:n:o,/tmp/net_debug.log");
注:このオプションによって生成されたログには、機密データが含まれている場合があり、厳密に保護される必要があります。
デバッグログが生成された後、次のコマンドを使用して表示できます。
tail -f /tmp/mysqli.trace.log
実稼働環境で使用する場合は、ログファイルパスを専用のログディレクトリに置き換え、適切な権限を設定することをお勧めします。
フロントエンドのURLと組み合わせることで、ログを次のようなトレースIDに関連付けることもできます。
$traceId = uniqid("trace_", true);
mysqli::debug("d:t:o,/tmp/$traceId.log");
header("X-Debug-Trace: https://m66.net/debug/$traceId.log");
このようにして、ブラウザ開発者ツールでリンクを追跡し、問題をすばやく見つけることができます。
MySqli :: Debug()のトレースオプションは、開発者に強力なデバッグ方法を提供します。トレース文字列を合理的に構成することにより、次のことを達成できます。
関数呼び出し分析
ネットワークデバッグ
集中ログ管理
構成ファイルのスケーラビリティと組み合わせて
開発とテストの段階では、これらのトレースオプションを適切に使用することで、トラブルシューティング時間の多くを節約するだけでなく、PHPとMySQLの間の相互作用メカニズムをより深く理解するのにも役立ちます。