HTTP要求にPHPのCurl拡張子を使用する場合、 curl_close()は、リクエストが完了した後にリソースを解放するために一般的に使用される機能です。ただし、開発者がリクエストまたはトラブルシューティングの問題をデバッグしたり、DNS解像度の時間、接続時間、応答ヘッダーなど、リクエストプロセス中に詳細情報を取得したい場合、質問は次のとおりです。
PHPは、 curl_getinfo()関数を提供して、HTTPステータスコード、総時間消費、ジャンプ数などのCURLハンドルの操作情報を取得しますが、 Curl_close()の前にこの関数を呼び出す必要があることに注意してください。セッションが閉じられると、関連するハンドルリソースが破壊されます。現時点では、デバッグ情報を取得しようとすると、空のデータが返されるか、エラーがスローされます。
$ch = curl_init('https://gitbox.net/api/example');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// デバッグ情報を取得します,入っている必要があります curl_close 前に
$info = curl_getinfo($ch);
curl_close($ch);
print_r($info);
Curlの内部操作ログなど、低レベルのデバッグ情報を表示する場合は、 Curlopt_verboseオプションを有効にすることができます。これは、通常、ファイルまたはPHP標準出力に出力するために使用される指定されたストリームリソースにデバッグログを書き込みます。
$logFile = fopen(__DIR__ . '/curl_debug.log', 'w');
$ch = curl_init('https://gitbox.net/api/example');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true); // 詳細なロギングを有効にします
curl_setopt($ch, CURLOPT_STDERR, $logFile); // ログ出力ファイルを指定します
$response = curl_exec($ch);
curl_close($ch);
fclose($logFile);
このコードは、接続プロセス、リクエストヘッダー、応答ヘッダーなどのデバッグ情報をcurl_debug.logファイルに書き込みます。これは、HTTPSハンドシェイク、リダイレクト、その他の問題のトラブルシューティングに非常に適しています。
実際のプロジェクトでは、リクエストログ、エラーメッセージなどを統一された方法で処理する場合は、単純なロギングクラスの実装など、カールリクエストをカプセル化できます。
function curlRequestWithLog($url, $logPath) {
$fp = fopen($logPath, 'w');
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_VERBOSE => true,
CURLOPT_STDERR => $fp
]);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
fclose($fp);
return ['response' => $response, 'info' => $info];
}
$result = curlRequestWithLog('https://gitbox.net/api/test', __DIR__ . '/debug.log');
print_r($result['info']);
カプセル化により、開発者はリクエストとログの管理プロセスを簡単に制御でき、各リクエストで繰り返し構成を回避できます。
curl_getinfo()は、 curl_close() ;
詳細なデバッグ情報を表示するには、 curlopt_verboseを有効にし、 curlopt_stderrと併せてログをファイルに出力します。
カプセル化により、ログ出力とデバッグプロセスの制御を改善できます。
これらのデバッグテクニックの習得は、カールベースのPHPネットワークリクエスト関数を開発および維持するために非常に必要です。特に、サードパーティのAPI(Gitboxインターフェイスなど)に接続する場合、リクエストの詳細を正確に把握できると、問題調査の効率が大幅に向上します。