2011-11-02 8 views
8

Este código siempre falla (es decir, $result es Boolean false):tiempo de espera de curvatura inferior a 1000 ms siempre falla?

 $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $path); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $curl_version = curl_version(); 

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 999); 

    $result = curl_exec($ch); 
    curl_close($ch); 

Este código siempre tiene éxito (es decir, $result es una cadena que contiene la cabecera):

 $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $path); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $curl_version = curl_version(); 

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000); 

    $result = curl_exec($ch); 
    curl_close($ch); 

La única diferencia es que Cambié el tiempo de espera de 999 ms a 1000 ms.

Esto debe ser un error en el enrollamiento o algún tipo de mínimo en la documentación de tiempos de espera de conexión que perdí. ¿Cuál es? Mi dinero está en este último.

Respuesta

12

de: http://www.php.net/manual/en/function.curl-setopt.php

El número de milisegundos de espera al intentar conectarse. Use 0 para esperar indefinidamente. Si libcurl está diseñado para usar el sistema de resolución de nombres de sistema estándar, esa parte de la conexión aún usará la resolución de segundo tiempo para los tiempos de espera con un tiempo de espera mínimo permitido de un segundo.

+0

¡Guau, cómo extrañé eso ?! – Trott

+0

Ok, vi esto en la documentación, pero realmente no entiendo lo que significa y cómo puedo hacer que funcione con un valor inferior a 1000. Cualquier ayuda que pueda darme será apreciada, ¡gracias! –

+0

Debe compilar libcurl para usted mismo, usando '--enable-threaded-resolver' y luego compilar la extensión curl para php. –

Cuestiones relacionadas