Funktion get_headers über Proxy

Probiers doch noch mal mit dieser zusätzlichen Option:

PHP:
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'HEAD');

Das Problem bei dir scheint zu sein, das der Download der Datei tatsächlich stattfindet. Die HEAD-Methode sollte das verhindern.
 
Ich habe jetzt mehrere Varianten getestet. Bei folgender bekomm ich zwar Header-Informationen, allerdings zeigt er mir keine größe an:

Code:
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY,         true);
curl_setopt($ch, CURLOPT_HEADER,         true);

Ergebnis:
Code:
    [content_type] => text/html
    [http_code] => 200
    [header_size] => 264
    [request_size] => 240
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.246939
    [namelookup_time] => 2.0E-5
    [connect_time] => 0.012149
    [pretransfer_time] => 0.012153
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 260
    [upload_content_length] => 0
    [starttransfer_time] => 0.246917
    [redirect_time] => 0

Wenn ich das ganze noch mit curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); ergänze, hängt sich das Script entweder, bzw. oder die Anfrage dauert ewig.
 
Das kann nicht der richtige Wert sein, die Datei ist über 100 MB groß.

Wie gesagt bei einer kleineren Datei funktioniert es so:

Code:
curl_setopt($ch, CURLOPT_URL,  $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

Code:
    [content_type] => application/octet-stream
    [http_code] => 200
    [header_size] => 416
    [request_size] => 239
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 9.296896
    [namelookup_time] => 2.0E-5
    [connect_time] => 0.012597
    [pretransfer_time] => 0.0126
    [size_upload] => 0
    [size_download] => 5000148
    [speed_download] => 537829
    [speed_upload] => 0
    [download_content_length] => 5000148
    [upload_content_length] => 0
    [starttransfer_time] => 4.910411
    [redirect_time] => 0

Er läd halt allerdings die Datei...

Wenn ich das dann mit NOBODY 1 und HEADER 1 erweitere zeigt er mir den falschen Wert an.
 
Zuletzt bearbeitet:
Hast du mal die curl-Trace-Schnittstelle ausprobiert?

CURLOPT_STDERR, CURLOPT_VERBOSE sind Optionen, die dir helfen können, die Ursache für das Problem zu finden

Wenn ich das ganze noch mit curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); ergänze, hängt sich das Script entweder, bzw. oder die Anfrage dauert ewig.

Dafür sollte das Timeout (CURLOPT_TIMEOUT) gesetzt werden.
 
Mir ist gerade aufgefallen, dass dieser Wert [download_content_length] => 260 die Header Informationen vom Proxy sind. Sobald ich CURLOPT_NOBODY auf 1 setze gibt er mir bei der Ausgabe von curl_exec() folgendes aus:
Code:
HTTP/1.0 200 OK Server: Lity 1.7 Content-Type: text/html Content-Length: 260 X-Cache: MISS from *PROXY-IP* X-Cache-Lookup: MISS from *PROXY-IP* Via: 1.0 *PROXY-IP* (squid/2.6.STABLE18) Proxy-Connection: keep-alive
 
Zuletzt bearbeitet:
Dann bietet dir der verwendete Proxy das wahrscheinlich nicht an. Hast du es mal mit einem beliebigen Proxy von hidemyass probiert?
 
Ja hab ich gerade probiert, will auch nicht funktionieren. Um nochmal kurz auf meine Anfangsfrage zurückzukommen, ist es nicht irgendwie möglich die Funktion get_headers() über einen Proxy auszuführen?
 
Meines Wissens nach nicht. Ich würde mir nicht die Mühe machen, wenn der Hauch einer Chance bestände, es darüber laufen zu lassen.
 
Zurück