PHPでcURLを使用してHTTPリクエストを送信する際、リクエストの詳細やレスポンスの情報を取得する必要がある場合があります。このような場合に便利な関数がcurl_getinfoです。この関数は、cURLセッションに関する詳細な情報を取得するために使用されます。
基本的な使い方
curl_getinfo関数は、以下のように使用します:
$info = curl_getinfo($ch, $opt);
ここで、以下の引数が必要です:
- $ch: cURLハンドル(curl_initで初期化されたもの)。
- $opt: 取得したい情報のオプション(オプション)。
利用可能なオプション
curl_getinfo関数では、以下のようなオプションを使用して様々な情報を取得できます。
オプション | 説明 |
---|---|
CURLINFO_EFFECTIVE_URL | リクエストされたURL |
CURLINFO_HTTP_CODE | HTTPステータスコード |
CURLINFO_FILETIME | ファイルの最後の変更時刻 |
CURLINFO_TOTAL_TIME | リクエストの全体的な時間 |
CURLINFO_NAMELOOKUP_TIME | DNS解決時間 |
CURLINFO_CONNECT_TIME | 接続時間 |
CURLINFO_PRETRANSFER_TIME | 接続後、データ転送開始までの時間 |
CURLINFO_STARTTRANSFER_TIME | データ転送開始時間 |
CURLINFO_REDIRECT_COUNT | リダイレクト回数 |
CURLINFO_REDIRECT_TIME | リダイレクト時間 |
CURLINFO_SIZE_UPLOAD | アップロードされたデータサイズ |
CURLINFO_SIZE_DOWNLOAD | ダウンロードされたデータサイズ |
CURLINFO_SPEED_DOWNLOAD | ダウンロード速度 |
CURLINFO_SPEED_UPLOAD | アップロード速度 |
CURLINFO_CONTENT_LENGTH_DOWNLOAD | ダウンロードされたコンテンツの長さ |
CURLINFO_CONTENT_LENGTH_UPLOAD | アップロードされたコンテンツの長さ |
例:cURLセッションの情報を取得する
以下は、cURLセッションの情報を取得する例です:
$ch = curl_init('http://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'cURL Error: ' . curl_error($ch);
} else {
$info = curl_getinfo($ch);
echo "HTTP Code: " . $info['http_code'] . "\n";
echo "Effective URL: " . $info['url'] . "\n";
echo "Total Time: " . $info['total_time'] . " seconds\n";
echo "Download Size: " . $info['size_download'] . " bytes\n";
}
curl_close($ch);
このコードは、http://example.comへのリクエストを送信し、HTTPステータスコード、リクエストされたURL、全体的な時間、ダウンロードサイズなどを表示します。
注意点
- エラー処理: 常にcurl_errnoやcurl_errorを使用してエラーをチェックすることが重要です。
- オプションの指定: 必要な情報のみを取得するために、適切なオプションを指定することが重要です。
まとめ
curl_getinfo関数は、cURLセッションに関する詳細な情報を取得するための強力なツールです。リクエストのパフォーマンスやレスポンスの詳細を確認するために非常に便利です。適切なオプションを使用することで、必要な情報を効率的に取得することができます。