PHP 5.6.0 released

curl_getinfo

(PHP 4 >= 4.0.4, PHP 5)

curl_getinfoInformationen zu einem bestimmten Transfer abfragen

Beschreibung

mixed curl_getinfo ( resource $ch [, int $opt = 0 ] )

Gibt Informationen über den letzen Transfer zurück.

Parameter-Liste

ch

Ein von curl_init() zurückgegebenes cURL-Handle.

opt

Eine der folgenden Konstanten:

  • CURLINFO_EFFECTIVE_URL - Letzter effektiver URL
  • CURLINFO_HTTP_CODE - Zuletzt empfangener HTTP-Code
  • CURLINFO_FILETIME - Übertragungszeit für das empfangene Dokument; wenn -1 zurückgegeben wird ist die Zeit unbekannt
  • CURLINFO_TOTAL_TIME - Gesamtdauer des letzten Transfers in Sekunden
  • CURLINFO_NAMELOOKUP_TIME - Zeit in Sekunden zur Auflösung des Hostnamens
  • CURLINFO_CONNECT_TIME - Dauer des Verbindungsaufbaus in Sekunden
  • CURLINFO_PRETRANSFER_TIME - Zeit in Sekunden zwischen dem Start und dem eigentlichen Beginn des Empfangs
  • CURLINFO_STARTTRANSFER_TIME - Zeit in Sekunden bis zur Übertragung des ersten Bytes
  • CURLINFO_REDIRECT_TIME - Zeit in Sekunden, die von allen Umleitungsschritten beansprucht wird, bevor der eigentliche Transfer beginnt
  • CURLINFO_SIZE_UPLOAD - Anzahl der gesendeten Bytes
  • CURLINFO_SIZE_DOWNLOAD - Anzahl der empfangenen Bytes
  • CURLINFO_SPEED_DOWNLOAD - Durchschnittliche Download-Geschwindigkeit
  • CURLINFO_SPEED_UPLOAD - Durchschnittliche Upload-Geschwindigkeit
  • CURLINFO_HEADER_SIZE - Gesamtgröße aller empfangenen Header
  • CURLINFO_HEADER_OUT - Der gesendete Request. Verfügbar seit PHP 5.1.3
  • CURLINFO_REQUEST_SIZE - Gesamtgröße aller Abfragen, momentan nur für HTTP verfügbar
  • CURLINFO_SSL_VERIFYRESULT - Ergebnis der SSL-Zertifikat-Überprüfung, angefordert durch das Setzen von CURLOPT_SSL_VERIFYPEER
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD - Die Größe des Downloads, ermittelt aus dem Content-Length-Header
  • CURLINFO_CONTENT_LENGTH_UPLOAD - Festgesetzte Größe des Uploads
  • CURLINFO_CONTENT_TYPE - Der Content-Type des geladenen Objekts, ermittelt aus dem empfangenen Content-Type-Header. Ein Rückgabewert NULL bedeutet, daß der Server einen ungültigen Header gesendet hat

Rückgabewerte

Wird der Parameter opt angegeben, wird der entsprechende Wert als string zurückgegeben. Andernfalls liefert die Funktion ein assoziatives Array mit den folgenden Elementen zurück (analog dem Parameter opt):

  • "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"

Changelog

Version Beschreibung
5.1.3 Konstante CURLINFO_HEADER_OUT eingeführt.

Beispiele

Beispiel #1 curl_getinfo()-Beispiel

<?php
// Eine cURL-Resource erstellen
$ch curl_init('http://www.yahoo.com/');

// ausführen
curl_exec($ch);

// prüfen, ob ein Fehler aufgetreten ist
if(!curl_errno($ch))
{
    
$info curl_getinfo($ch);

    echo 
'Es wurden ' $info['total_time'] . ' Sekunden benötigt für einen Request an ' $info['url'];
}

// Resource schliessen
curl_close($ch);
?>

add a note add a note

User Contributed Notes 9 notes

up
11
ssttoo at hotmail dot com
10 years ago
Here are the response codes ready for pasting in an ini-style file. Can be used to provide more descriptive message, corresponding to 'http_code' index of the arrray returned by curl_getinfo().
These are taken from the W3 consortium HTTP/1.1: Status Code Definitions, found at
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

[Informational 1xx]
100="Continue"
101="Switching Protocols"

[Successful 2xx]
200="OK"
201="Created"
202="Accepted"
203="Non-Authoritative Information"
204="No Content"
205="Reset Content"
206="Partial Content"

[Redirection 3xx]
300="Multiple Choices"
301="Moved Permanently"
302="Found"
303="See Other"
304="Not Modified"
305="Use Proxy"
306="(Unused)"
307="Temporary Redirect"

[Client Error 4xx]
400="Bad Request"
401="Unauthorized"
402="Payment Required"
403="Forbidden"
404="Not Found"
405="Method Not Allowed"
406="Not Acceptable"
407="Proxy Authentication Required"
408="Request Timeout"
409="Conflict"
410="Gone"
411="Length Required"
412="Precondition Failed"
413="Request Entity Too Large"
414="Request-URI Too Long"
415="Unsupported Media Type"
416="Requested Range Not Satisfiable"
417="Expectation Failed"

[Server Error 5xx]
500="Internal Server Error"
501="Not Implemented"
502="Bad Gateway"
503="Service Unavailable"
504="Gateway Timeout"
505="HTTP Version Not Supported"

And an example usage:
<?php
$ch
= curl_init(); // create cURL handle (ch)
if (!$ch) {
    die(
"Couldn't initialize a cURL handle");
}
// set some cURL options
$ret = curl_setopt($ch, CURLOPT_URL,            "http://mail.yahoo.com");
$ret = curl_setopt($ch, CURLOPT_HEADER,         1);
$ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$ret = curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
$ret = curl_setopt($ch, CURLOPT_TIMEOUT,        30);

// execute
$ret = curl_exec($ch);

if (empty(
$ret)) {
   
// some kind of an error happened
   
die(curl_error($ch));
   
curl_close($ch); // close cURL handler
} else {
   
$info = curl_getinfo($ch);
   
curl_close($ch); // close cURL handler

   
if (empty($info['http_code'])) {
            die(
"No HTTP code was returned");
    } else {
       
// load the HTTP codes
       
$http_codes = parse_ini_file("path/to/the/ini/file/I/pasted/above");
       
       
// echo results
       
echo "The server responded: <br />";
        echo
$info['http_code'] . " " . $http_codes[$info['http_code']];
    }

}
?>
up
5
nemetral
6 years ago
Just a quick note: if you want to use curl_getinfo() with option CURLINFO_HEADER_OUT in order to debug your cURL request, you must add curl_setopt($handle, CURLINFO_HEADER_OUT, true); first while specifying the options.
up
4
Mark Evers
6 years ago
There is a constant missing from that list.  CURLINFO_REDIRECT_COUNT will give you the number of redirects it went through if CURLOPT_FOLLOWLOCATION was set.
up
1
Anonymous
4 years ago
The main doc neglects to mention that when the CURLINFO_HEADER_OUT option is set the array returned by this function will included a new property, request_header, that is a string of the headers sent in the request.
up
0
bg at enativ dot com
5 months ago
curl_getinfo($ch) will also return 'redirect_url' if there is one (even if CURLOPT_FOLLOWLOCATION set to false).
I don't know why it's not in the doc..
up
-1
Piker
4 months ago
Example 1 should use "if(curl_errno($ch))" not "if(!curl_errno($ch))"
up
-1
vince
3 years ago
CURLINFO_HTTP_CODE does not return a string, as the docs say, but rather an integer.

<?php
    $c
= curl_init('http://www.example.com/');
    if(
curl_getinfo($c, CURLINFO_HTTP_CODE) === '200') echo "CURLINFO_HTTP_CODE returns a string.";
    if(
curl_getinfo($c, CURLINFO_HTTP_CODE) === 200) echo "CURLINFO_HTTP_CODE returns an integer.";
   
curl_close($c);
?>

returns

"CURLINFO_HTTP_CODE returns an integer."
up
-1
nikita dot bulatenko at gmail dot com
1 year ago
CURLINFO_SSL_VERIFYRESULT error codes:
0: ok the operation was successful.
2 : unable to get issuer certificate
3: unable to get certificate CRL
4: unable to decrypt certificate's signature
5: unable to decrypt CRL's signature
6: unable to decode issuer public key
7: certificate signature failure
8: CRL signature failure
9: certificate is not yet valid
10: certificate has expired
11: CRL is not yet valid
12:CRL has expired
13: format error in certificate's notBefore field
14: format error in certificate's notAfter field
15: format error in CRL's lastUpdate field
16: format error in CRL's nextUpdate field
17: out of memory
18: self signed certificate
19: self signed certificate in certificate chain
20: unable to get local issuer certificate
21:unable to verify the first certificate
22: certificate chain too long
23: certificate revoked
24: invalid CA certificate
25: path length constraint exceeded
26: unsupported certificate purpose
27: certificate not trusted
28: certificate rejected
29: subject issuer mismatch
30: authority and subject key identifier mismatch
31: authority and issuer serial number mismatch
32: key usage does not include certificate signing
50: application verification failure
details at http://www.openssl.org/docs/apps/verify.html#VERIFY_OPERATION
up
-2
luiheidsgoeroe at hotmail dot com
6 years ago
Keep in mind that for CURLOPT_RETURNTRANSFER it has to be set with curl_setopt() before execution:

This doesn't work:
<?php
$ch
= curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
var_dump(curl_getinfo($ch,CURLINFO_HEADER_OUT));
?>

This works:
<?php
$ch
= curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);
var_dump(curl_getinfo($ch,CURLINFO_HEADER_OUT));
?>
To Top