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));
?>
curl_getinfo
(PHP 4 >= 4.0.4, PHP 5)
curl_getinfo — Informationen zu einem bestimmten Transfer abfragen
Beschreibung
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 Upwnload-Geschwindigkeit
- CURLINFO_HEADER_SIZE - Gesamtgrößer 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"
curl_getinfo
luiheidsgoeroe at hotmail dot com
04-Feb-2008 03:02
04-Feb-2008 03:02
Mark Evers
16-Jan-2008 10:14
16-Jan-2008 10:14
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.
ssttoo at hotmail dot com
06-Apr-2004 12:13
06-Apr-2004 12:13
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']];
}
}
?>
12-Sep-2002 02:02
You can get some documentation about what these values mean in the libcurl C API documentation here:
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
