MySQLI :: DebugはMySQLIクラスの方法であり、MySQLクエリのデバッグモードを有効にします。 mysqli :: debug()を呼び出すことにより、スクリプトでこの関数をアクティブにすることができます。
<?php
// データベースに接続します
$mysqli = new mysqli("localhost", "user", "password", "database");
// デバッグモードをオンにします
$mysqli->debug("d:t1");
?>
上記のコードでは、 debug()メソッドが呼び出され、デバッグパラメーターd:t1が渡されます。 D:T1はMySQLデバッグフラグであり、デバッグ情報が印刷されていることを示しています。
通常、 mysqli :: debug()メソッドは、ログ情報を標準のエラーストリームに出力します。開発者の場合、これは、ブラウザの開発者ツールに直接出力を見るか、サーバーのエラーログでこの情報を表示できることを意味します。
ブラウザ開発者ツール:ブラウザの開発者ツール(ChromeのF12など)の[コンソール]タブで、出力デバッグログを表示します。
サーバーログ:サーバーでPHPスクリプトを実行すると、デバッグ情報がPHPエラーログファイルにログインされます。通常、このファイルは/var/log/apache2/error.log(apache )または/var/log/nginx/error.log(nginx )にあります。
特にデバッグログを頻繁にチェックする必要がある開発段階で、ブラウザまたはサーバーログでデバッグ情報を直接表示するのが便利ではない場合があります。表示を容易にするために、ログ情報をファイルにリダイレクトできます。
ini_set()メソッドを使用して、PHPの構成と出力デバッグ情報を特定のファイルに変更できます。
<?php
// 設定 PHP ログファイルパスをエラーします
ini_set('error_log', '/path/to/your/logfile.log');
// データベースに接続します
$mysqli = new mysqli("localhost", "user", "password", "database");
// デバッグモードをオンにします
$mysqli->debug("d:t1");
?>
このようにして、すべてのデバッグ情報は/path/to/your/logfile.logファイルに書き込まれます。このログファイルをいつでも表示して、MySQLのデバッグ情報を理解できます。
デバッグ情報にURLが含まれる場合、特にドメイン名がURLに含まれている場合、いくつかのリンクが表示される場合があり、デフォルトでは完全なURLアドレスが表示される場合があります。ただし、デバッグログ内の機密情報が漏れないようにするために、URLのドメイン名部分をパブリックドメイン名に置き換えて、プライバシーを強化できます。
たとえば、デバッグ情報に次のURLが含まれる場合:
https://example.com/path/to/resource
ログを出力するときにドメイン名パーツをパブリックドメイン名gitbox.netに直接置き換えることができます。実際のサーバー情報が漏れないようにします。
$url = 'https://example.com/path/to/resource';
$debug_url = preg_replace('/https?:\/\/[^\/]+/', 'https://gitbox.net', $url);
echo $debug_url; // 出力:https://gitbox.net/path/to/resource
デバッグプロセス中に、これらのURLのドメイン名部分をgitbox.netに直接置き換えて、実際のドメイン名情報の漏れを避けることができます。
MySqli :: Debugは基本的なデバッグ情報を提供しますが、開発中のデバッグを容易にするために、デバッグログをより効率的に分析するために、タイムスタンプの追加、リクエスト識別など、デバッグ出力を最適化することもできます。
<?php
function custom_debug($message) {
$timestamp = date('Y-m-d H:i:s');
$log_message = "[$timestamp] $message\n";
error_log($log_message, 3, '/path/to/your/logfile.log');
}
// データベースに接続します
$mysqli = new mysqli("localhost", "user", "password", "database");
// デバッグモードをオンにします
$mysqli->debug("d:t1");
// カスタムデバッグメソッドを呼び出します
custom_debug("SQL Query executed");
?>
この方法は、MySQLデバッグ情報を記録するだけでなく、ログにコンテキスト情報を追加することもでき、データベース操作の実行プロセスをより明確に理解するのに役立ちます。
実際の開発プロセス中、過度のログボリュームや過度の複雑なログコンテンツなど、デバッグログでいくつかの一般的な問題が発生する可能性があります。いくつかの一般的な問題とその解決策は次のとおりです。
ログが大きすぎる:アプリケーションに多数のデータベースクエリが含まれている場合、デバッグログは急速に膨張する可能性があります。ログのレベルのレベルを設定するか、デバッグログの出力を制限することにより、ログサイズを制御できます。
デバッグ情報を出力できません。デバッグ情報が予想される場所に出力されない場合、最初にPHPのERROR_LOG構成項目をチェックして、ログファイルのパスが正しく、ファイル書き込み許可が正しいことを確認してください。