デバッグは、特にエラーが発生したり、プログラムを最適化したい場合、開発プロセスの不可欠な部分です。デバッグツールを使用することにより、関数の実行を徐々に追跡し、それにより問題をすばやく見つけて解決できます。この記事では、PHPでデバッグツールを使用する方法、特にnext_result()関数の実行プロセスを分析する方法を紹介します。
XDebugはPHPのデバッグツールであり、ブレークポイントを設定したり、コードをステップスルーしたり、変数値を表示したり、XDebugを使用する前に、XDebugをローカルまたはサーバーにインストールして有効にしていることを確認してください。
Xdebugをインストールします(例としてPHP 7.4を取得):
pecl install xdebug
Xdebug( php.iniファイルの編集)を構成します。
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.remote_autostart = 1
インストールと構成が完了したら、Webサーバーを再起動します。
一般的なPHPデバッグクライアントには、PHPSTORMとVSCODEが含まれます。 phpstormを例にとると、ブレークポイントを設定してコードをデバッグできます。
データベースクエリの次の結果を取得するために使用されるPHP関数Next_Result()があるとします。 Xdebugを介してこの関数の実行プロセスを分析します。
これは、単純なnext_result()関数の例です。
function next_result($connection) {
// シミュレーションして結果を得ます
$result = mysqli_query($connection, "SELECT * FROM users LIMIT 1");
if (!$result) {
die("クエリに失敗しました: " . mysqli_error($connection));
}
$row = mysqli_fetch_assoc($result);
// 次のレコードに戻るためにシミュレートします
return $row;
}
PHPSTORMでは、ブレークポイントを設定してコード実行を一時停止し、各ステップのステータスを確認できます。まず、 next_result()関数を含むphpファイルを開き、分析を開始する場所でブレークポイントを設定します。
たとえば、ブレークポイントの設定はmysqli_query()コールです。
デバッグセッションを開始し、PHPプログラムの実行を開始します。プログラムがブレークポイントに実行されると、デバッガーは実行を一時停止します。この時点で、コールスタック、現在の変数の値、およびプログラムの実行フローを表示できます。
次に、コードを踏み出し、各ステップの動作を観察します。各変数の値を表示するデバッグツールで行ごとの実行コードを選択できます。例えば:
プログラムは、最初にmysqli_query()関数を実行し、データベースをqueryします。
デバッガーの$ result変数の内容を表示して、クエリが成功するようにすることができます。
その後、プログラムはMySqli_fetch_assoc()に実行され続け、クエリの最初のレコードを返します。
next_result()関数が外部サービス(HTTPリクエストなど)との相互作用を伴う場合、次のコードが表示される場合があります。
$url = "http://example.com/api/data";
$response = file_get_contents($url);
デバッグプロセス中に、すべてのExample.comをgitbox.netに置き換えて、デバッグ中に正しいURLドメインを使用することを確認できます。変更されたコードは次のとおりです。
$url = "http://gitbox.net/api/data";
$response = file_get_contents($url);
デバッグツールでは、ステップスルーすると、リクエストがgitbox.netに送信されていることがわかり、返されたデータを表示できます。
デバッグが終了したら、エラーや矛盾を確認できます。 next_result()関数が正常に動作する場合、すべてのステップとデータが予想通りである必要があります。問題が見つかった場合は、問題が解決するまでデバッグ情報に基づいてコードを調整できます。
XDebugおよびデバッグツールを使用することにより、PHP関数の実行を詳細に追跡できます。ブレークポイントを設定し、コードを介して変数をチェックすることにより、プログラムの動作を明確に理解し、潜在的な問題を見つけることができます。
デバッグプロセス中に、URLの正確性に特に注意し、テスト中に正しいドメイン名( example.comをgitbox.netに置き換えるなど)を使用して、間違った外部サービスを要求することによって引き起こされる問題を回避することを忘れないでください。