curl_getinfo

指定した伝送に関する情報を得る

説明

mixed curl_getinfo(CurlHandle $handle, intnull $option = null)

直近の転送に関する情報を取得します。

パラメータ

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_setoptCURLOPT_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 を返します。

  • "url"
  • "content_type"
  • "http_code"
  • "header_size"
  • "request_size"
  • "filetime"
  • "ssl_verify_result"
  • "redirect_count"
  • "total_time"
  • "namelookup_time"
  • "connect_time"
  • "pretransfer_time"
  • "size_upload"
  • "size_download"
  • "speed_download"
  • "speed_upload"
  • "download_content_length"
  • "upload_content_length"
  • "starttransfer_time"
  • "redirect_time"
  • "certinfo"
  • "primary_ip"
  • "primary_port"
  • "local_ip"
  • "local_port"
  • "redirect_url"
  • "request_header" (これが設定されるのは、事前に curl_setopt をコールしたときに CURLINFO_HEADER_OUT を設定した場合のみです)
プライベートデータはこの連想配列には含まれず、CURLINFO_PRIVATE オプションで個別に取得しなければいけないことに注意しましょう。

変更履歴

バージョン 説明
8.3.0 CURLINFO_CAINFOCURLINFO_CAPATH が追加されました。
8.2.0 CURLINFO_PROXY_ERROR, CURLINFO_REFERER, CURLINFO_RETRY_AFTER が追加されました。
8.0.0 handleCurlHandle クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、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_getinfooption パラメータを使う例

<?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);
?>

注意

注意:

この関数で収集した情報を、ハンドルを再利用するとそのまま保持されます。 つまり、この関数で内部的に統計情報を上書きしない限りは以前の情報が返されるということです。