2009-12-20 28 views
8

¿Alguien sabe por qué podría cURL en php5 ser tan lento en fallar incluso con 45 segundos de tiempo de espera, descargando algunos archivos kb en un servidor speedO'light?cURL realmente lento

El código está aquí como solicitado (a pesar de que aumentó la tiempos de espera aún más por la secuencia de comandos no fallar durante la ejecución y cambiado de agente de usuario a Mozilla/4.0 de Chrome inicial):

$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

publicar su código o la parte en el código – dusoft

+0

Hola y bienvenido al sitio. ¿Estás usando HTTP 1.1 o 1.0? –

+0

bien, aquí está el código, y @Alix Axel, por lo que sé que el cURL envía solicitudes de HTTP 1.1 por defecto, no cambié eso – mangefort

Respuesta

7

hmm, podría ser una algunas cosas, tal vez algo de salida detallada tendrán un error de algún tipo

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

a veces, el agente de usuario cambiará cómo responde un sitio, puede que tenga que hacer algo como:

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

Gracias, lo intentaré también. – mangefort

+0

esa sugerencia de agente de usuario - material sólido – Mojowen

2

Cuando configuro un CONNECTtimeout, obtengo una respuesta más rápida. Incluyendo esta opción:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1) 
Cuestiones relacionadas