2009-12-20 13 views
8

Weiß jemand, warum könnte cURL unter php5 so verdammt langsam sein, selbst bei 45s timeout zu versagen, eine kb-datei auf einem speedO'light server herunterzuladen?cURL wirklich langsam

Der Code ist hier wie gewünscht (obwohl ich die Timeouts noch mehr für das Skript nicht upped während der Ausführung zum Scheitern verurteilt und geändert User-Agent Mozilla/4.0 von der ersten Chrome):

$ch = curl_init('http://www.somesite.com/' . $key); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.somesite.com/somereferer/'); 
// curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0'); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 600); 
+2

posten Sie Ihren Code oder den Teil im Code – dusoft

+0

Hallo, und auf die Website begrüßen zu können. Verwenden Sie HTTP 1.1 oder 1.0? –

+0

ok, hier ist der Code, und @ Alix Axel, soweit ich weiß die cURL sendet HTTP 1.1 Anfragen standardmäßig, änderte ich das nicht – mangefort

Antwort

7

hmm, ein sein könnte einige Dinge, vielleicht einige ausführliche Ausgabe wird einen Fehler von einigen

Art haben
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); // some output will go to stderr/error_log 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$response = curl_exec($ch); 
$errStr = curl_error($ch); 
$errNum = curl_errno($ch); 
$head = curl_getinfo($ch, CURLINFO_HEADER_OUT); 
$ci = curl_getinfo($ch); 
print_r(array($head, $errStr, $errNum, $ci)); 

Manchmal ändert sich der User-Agent wird wie eine Website reagiert, müssen möglicherweise so etwas wie zu tun:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101'); 
+0

Danke, ich werde das auch versuchen. – mangefort

+0

dieser User Agent Tipp - solide Sachen – Mojowen

2

Wenn ich ein CONNECTtimeout einstelle, bekomme ich schnellere Antwort. diese Option Inklusive:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1) 
Verwandte Themen