(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
curl_getinfo — 指定した伝送に関する情報を得る
handle
curl_init() が返す cURL ハンドル。
option
これは、以下のいずれかの定数となります。
Option | 説明 |
---|---|
CURLINFO_CAINFO | デフォルトの組み込みCA証明書のパス |
CURLINFO_CAPATH | デフォルトの組み込みCAのパスの文字列 |
CURLINFO_EFFECTIVE_URL | 直近の有効な URL |
CURLINFO_HTTP_CODE | 最後に受け取った HTTP コード。cURL 7.10.8 以降では CURLINFO_RESPONSE_CODE の別名になりました。 |
CURLINFO_FILETIME | ドキュメントを取得するのにかかった時間。 CURLOPT_FILETIME が有効な状態で用いる。 取得できなかった場合は -1 |
CURLINFO_TOTAL_TIME | 直近の伝送にかかった秒数 |
CURLINFO_NAMELOOKUP_TIME | 名前解決が完了するまでにかかった秒数 |
CURLINFO_CONNECT_TIME | 接続を確立するまでにかかった秒数 |
CURLINFO_PRETRANSFER_TIME | 開始からファイル伝送がはじまるまでにかかった秒数 |
CURLINFO_STARTTRANSFER_TIME | 最初のバイトの伝送がはじまるまでの秒数 |
CURLINFO_REDIRECT_COUNT | リダイレクト処理の回数 (CURLOPT_FOLLOWLOCATION オプションが有効な場合) |
CURLINFO_REDIRECT_TIME | 伝送が始まるまでのリダイレクト処理の秒数 (CURLOPT_FOLLOWLOCATION オプションが有効な場合) |
CURLINFO_REDIRECT_URL | CURLOPT_FOLLOWLOCATION オプションが無効な場合: 直近のトランザクションで見つかったリダイレクト先 URL。これを、次に手動でリクエストしなければいけません。 CURLOPT_FOLLOWLOCATION オプションが有効な場合: これは空になります。 この場合のリダイレクト先 URL は、CURLINFO_EFFECTIVE_URL となります。 |
CURLINFO_PRIMARY_IP | 直近の接続の IP アドレス |
CURLINFO_PRIMARY_PORT | 直近の接続の接続先ポート |
CURLINFO_LOCAL_IP | 直近の接続の接続元 IP アドレス |
CURLINFO_LOCAL_PORT | 直近の接続の接続元ポート |
CURLINFO_SIZE_UPLOAD | アップロードされたバイト数 |
CURLINFO_SIZE_DOWNLOAD | ダウンロードされたバイト数 |
CURLINFO_SPEED_DOWNLOAD | 平均のダウンロード速度 |
CURLINFO_SPEED_UPLOAD | 平均のアップロード速度 |
CURLINFO_HEADER_SIZE | 受信したヘッダのサイズ |
CURLINFO_HEADER_OUT | 送信したリクエスト文字列。 これを動作させるには、curl_setopt() をコールする際に CURLINFO_HEADER_OUT オプションを使うようにしておく必要があります。 |
CURLINFO_REFERER | リファラヘッダ |
CURLINFO_REQUEST_SIZE | 発行されたリクエストのサイズ。現在は HTTP リクエストの場合のみ |
CURLINFO_RETRY_AFTER | Retry-After: ヘッダから得られる情報。有効なヘッダがない場合はゼロ。 |
CURLINFO_SSL_VERIFYRESULT | CURLOPT_SSL_VERIFYPEER を設定した際に要求される SSL 証明書の認証結果 |
CURLINFO_CONTENT_LENGTH_DOWNLOAD | ダウンロードされるサイズ。 Content-Length: フィールドの内容を取得する |
CURLINFO_CONTENT_LENGTH_UPLOAD | アップロードされるサイズ。 |
CURLINFO_PROXY_ERROR | 直近の転送が CURLE_PROXY を返したときの (SOCKS) プロキシの詳細なエラーコード。 返される値は、 CURLPX_* のうちのひとつです。 レスポンスコードが利用できない場合、 エラーコードは CURLPX_OK になります。 |
CURLINFO_CONTENT_TYPE | 要求されたドキュメントの Content-Type: ヘッダ。 NULL の場合は、サーバーが適切な Content-Type: ヘッダを返さなかったことを示す。 |
CURLINFO_PRIVATE | この cURL ハンドルに関連づけられたプライベートデータ。 事前に curl_setopt() の CURLOPT_PRIVATE オプションで設定したもの。 |
CURLINFO_RESPONSE_CODE | 直近のレスポンスコード。 |
CURLINFO_HTTP_CONNECTCODE | CONNECT のレスポンスコード。 |
CURLINFO_HTTPAUTH_AVAIL | 直前のレスポンスから判断する、利用可能な認証方式のビットマスク。 |
CURLINFO_PROXYAUTH_AVAIL | 直前のレスポンスから判断する、プロキシ認証方式のビットマスク。 |
CURLINFO_OS_ERRNO | 接続に失敗したときのエラー番号。OS やシステムによって異なります。 |
CURLINFO_NUM_CONNECTS | curl が直前の転送を実行するために要した接続数。 |
CURLINFO_SSL_ENGINES | サポートする OpenSSL 暗号エンジン。 |
CURLINFO_COOKIELIST | すべての既知のクッキー。 |
CURLINFO_FTP_ENTRY_PATH | FTP サーバーのエントリパス。 |
CURLINFO_APPCONNECT_TIME | リモートホストとの SSL/SSH 接続/ハンドシェイク が完了するまでに要した秒数。 |
CURLINFO_CERTINFO | TLS 証明書チェイン。 |
CURLINFO_CONDITION_UNMET | 時間の条件が満たされなかったことに関する情報。 |
CURLINFO_RTSP_CLIENT_CSEQ | 次の RTSP クライアントの CSeq。 |
CURLINFO_RTSP_CSEQ_RECV | 直前に受け取った CSeq。 |
CURLINFO_RTSP_SERVER_CSEQ | 次の RTSP サーバーの CSeq。 |
CURLINFO_RTSP_SESSION_ID | RTSP セッション ID。 |
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T | ダウンロードの content-length の値。これは Content-Length: フィールドから読み取った値です。-1 はサイズが不明であることを示します。 |
CURLINFO_CONTENT_LENGTH_UPLOAD_T | 指定されたアップロードのサイズ。-1 はサイズが不明であることを示します。 |
CURLINFO_HTTP_VERSION | 直近のHTTP接続で使われたバージョン。返される値は、CURL_HTTP_VERSION_* で定義されたうちのひとつです。バージョンが特定できない場合は、0 が返されます。 |
CURLINFO_PROTOCOL | 直近のHTTP接続で使われたプロトコル。返される値は、CURLPROTO_* で定義されたうちのひとつです。 |
CURLINFO_PROXY_SSL_VERIFYRESULT | (CURLOPT_PROXY_SSL_VERIFYPEER オプションを使って) リクエストされた証明書の検証結果です。 HTTPS プロキシを使った場合にのみ有効です。 |
CURLINFO_SCHEME | 直近の接続で使われたURLスキーム |
CURLINFO_SIZE_DOWNLOAD_T | ダウンロードした合計のバイト数。この数値は直近の転送のみの値です。新しい転送が行われるたびにリセットされます。 |
CURLINFO_SIZE_UPLOAD_T | アップロードされた合計サイズ(バイト単位) |
CURLINFO_SPEED_DOWNLOAD_T | ダウンロードが完了した際にcurlが計測した、平均ダウンロード速度(バイト/毎秒) |
CURLINFO_SPEED_UPLOAD_T | アップロードが完了した際にcurlが計測した、平均アップロード速度(バイト/毎秒) |
CURLINFO_APPCONNECT_TIME_T | リモートホストと SSL/SSH の接続/ハンドシェイクを開始してから完了するまでにかかった時間 (マイクロ秒) |
CURLINFO_CONNECT_TIME_T | リモートホスト(またはプロキシ) と接続を開始して、完了するまでにかかった合計時間(マイクロ秒) |
CURLINFO_FILETIME_T | 文書を取得したリモートの時間(Unixタイムスタンプ)。これは CURLINFO_FILETIME の代替であり、32ビットのタイムスタンプの範囲から外れた日付を32ビットのシステムで変数に展開することができます。 |
CURLINFO_NAMELOOKUP_TIME_T | 名前解決が完了するまでにかかった時間(マイクロ秒) |
CURLINFO_PRETRANSFER_TIME_T | ファイルの転送が始まるまでにかかった時間(マイクロ秒) |
CURLINFO_REDIRECT_TIME_T | リダイレクトのステップ全てにかかった合計時間(マイクロ秒)。これには、名前解決や接続、事前の転送や最後のトランザクションが開始されるまでの転送処理を含みます。 |
CURLINFO_STARTTRANSFER_TIME_T | 最初のバイトを受信するまでにかかった時間(マイクロ秒) |
CURLINFO_TOTAL_TIME_T | 名前解決, TCP 接続などを含む、以前の転送にかかった合計時間(マイクロ秒) |
option
を指定した場合は、その値を返します。 それ以外の場合は、以下の要素をもつ連想配列を返します (それぞれの要素が option
に対応します)。 失敗した場合は false
を返します。
CURLINFO_HEADER_OUT
を設定した場合のみです) CURLINFO_PRIVATE
オプションで個別に取得しなければいけないことに注意しましょう。 バージョン | 説明 |
---|---|
8.3.0 | CURLINFO_CAINFO と CURLINFO_CAPATH が追加されました。 |
8.2.0 | CURLINFO_PROXY_ERROR , CURLINFO_REFERER , CURLINFO_RETRY_AFTER が追加されました。 |
8.0.0 | handle は CurlHandle クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。 |
8.0.0 | option は nullable になりました。 これより前のバージョンでは、デフォルト値は 0 でした。 |
7.3.0 | CURLINFO_CONTENT_LENGTH_DOWNLOAD_T , CURLINFO_CONTENT_LENGTH_UPLOAD_T , CURLINFO_HTTP_VERSION , CURLINFO_PROTOCOL , CURLINFO_PROXY_SSL_VERIFYRESULT , CURLINFO_SCHEME , CURLINFO_SIZE_DOWNLOAD_T , CURLINFO_SIZE_UPLOAD_T , CURLINFO_SPEED_DOWNLOAD_T , CURLINFO_SPEED_UPLOAD_T , CURLINFO_APPCONNECT_TIME_T , CURLINFO_CONNECT_TIME_T , CURLINFO_FILETIME_T , CURLINFO_NAMELOOKUP_TIME_T , CURLINFO_PRETRANSFER_TIME_T , CURLINFO_REDIRECT_TIME_T , CURLINFO_STARTTRANSFER_TIME_T , CURLINFO_TOTAL_TIME_T が追加されました。 |
例1 curl_getinfo() の例
<?php
// cURL ハンドルを作成します
$ch = curl_init('http://www.example.com/');
// 実行します
curl_exec($ch);
// エラーが発生したかどうかを確認します
if (!curl_errno($ch)) {
$info = curl_getinfo($ch);
echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n";
}
// ハンドルを閉じます
curl_close($ch);
?>
例2 curl_getinfo() で option
パラメータを使う例
<?php
// cURL ハンドルを作成します
$ch = curl_init('http://www.example.com/');
// 実行します
curl_exec($ch);
// HTTP ステータスコードを調べます
if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200: # OK
break;
default:
echo 'Unexpected HTTP code: ', $http_code, "\n";
}
}
// ハンドルを閉じます
curl_close($ch);
?>
注意:
この関数で収集した情報を、ハンドルを再利用するとそのまま保持されます。 つまり、この関数で内部的に統計情報を上書きしない限りは以前の情報が返されるということです。