現在の位置: ホーム> 最新記事一覧> MySqli ::デバッグの使用方法データベースのタイムアウトの問題を分析します

MySqli ::デバッグの使用方法データベースのタイムアウトの問題を分析します

M66 2025-05-17

毎日のPHP開発では、データベースのパフォーマンスの問題が最も厄介であることが多く、特に断続的なタイムアウトの問題が発生するため、開発者が迅速に見つけるのが難しくなります。幸いなことに、PHPのMySQLI拡張機能は、詳細なデータベース操作ログを記録するのに役立つ強力なツール-MySqli :: Debugを提供し、それにより遅いクエリまたは接続の問題を深く分析し、パフォーマンスのボトルネックを迅速に見つけることができます。

1。mysqli :: debugとは何ですか?

MySqli :: DebugはMySQLIクラスのメソッドであり、デバッグロギングを可能にします。このメソッドは、関連するMySQLクライアントの操作をログファイルに記録し、接続中の例外やパフォーマンスの問題、SQL実行のトラブルシューティングに役立ちます。

 mysqli::debug(string $debug_options): bool

この方法は通常、データベース接続の前に呼び出され、 MySQLNDドライバーがPHPコンパイル時間で有効になることを要求し、デバッグが設定されます。

2。デバッグを有効にするための前提条件

mysqli :: debugを使用するには、確認する必要があります。

  1. PHPはmysqlndドライバーを使用します<br> phpinfo()を確認することで確認できます。

     phpinfo();
    

    mysqlndを検索してください。次の単語が表示されている場合は、次のことを意味します。

     Client API library version => mysqlnd 8.x.x
    
  2. PHP.ini構成を変更して、デバッグを有効にします

    mysqlnd.debug = "/tmp/mysqlnd.log"
    

    変更後、PHP-FPMまたはApacheサービスを再起動します。

3. mysqli :: debugの使用方法は?

PHPスクリプトで、 mysqli :: debug()を呼び出してから、データベース接続を作成し、クエリを正常に実行します。例えば:

 <?php

// デバッグロギングを有効にします
mysqli::debug("d:t:o,/tmp/mysqlnd.log");

// データベース接続
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");

if ($mysqli->connect_errno) {
    echo "接続に失敗しました: " . $mysqli->connect_error;
    exit();
}

// クエリを実行します
$result = $mysqli->query("SELECT * FROM users WHERE status = 'active'");

while ($row = $result->fetch_assoc()) {
    echo $row['username'] . "<br>";
}

$mysqli->close();
?>

で:

  • 拒否可能なデバッグ

  • TADDタイムスタンプ

  • o、/tmp/mysqlnd.log出力ファイルを指定します

4.デバッグログを分析します

デバッグログは、指定した場所( /tmp/mysqlnd.logなど)に出力され、 LessTail 、またはText Editorを使用してコンテンツを表示できます。

 tail -f /tmp/mysqlnd.log

一般的な分析ポイントは次のとおりです。

  • 接続は時間がかかりますか?

  • クエリステートメントが繰り返し実行されるかどうか

  • キャッシュがヒットした場合、クエリ

  • 遅いクエリには時間がかかります

SQLステートメントの説明分析により、インデックスを最適化する必要があるか、フルテーブルスキャンを避ける必要があるかをより正確に判断できます。

5.スロークエリログと組み合わせたさらなる位置付け

MySQLI :: Debugは豊富なクライアント情報を提供しますが、より深いスロークエリ分析にはMySQL独自のスロークエリログも必要です。

 SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

MySqli :: Debugのクライアントログと組み合わせたスロークエリログは、ボトルネックをすばやく見つけるために、両端からコラボレーションして分析できます。

6.デバッグが完了した後のデバッグを閉じる

パフォーマンスおよびセキュリティ上の理由から、開発環境またはテスト環境でデバッグを使用する必要があります。デバッグ後に閉じることを忘れないでください:

 mysqli::debug(""); // シャットダウンに等しいデバッグパラメーターをクリアします

7。概要

MySqli :: Debugを使用すると、PHPスクリプトとMySQLの間の相互作用プロセスを正確に記録および分析できます。これは、データベース接続の問題、断続的なタイムアウト、スロークエリ分析の処理に大きな価値があります。開発段階でこのツールを適切に使用すると、発売後に「鉱山を踏む」可能性を大幅に減らすことができます。