2012-04-25 20 views

Respuesta

23

Los valores por defecto son los siguientes:

  • CURLOPT_FTP_RESPONSE_TIMEOUT: Indefinida
  • CURLOPT_TIMEOUT: Indefinida
  • CURLOPT_TIMEOUT_MS: Indefinida
  • CURLOPT_CONNECTTIMEOUT: 300 segundos
  • CURLOPT_CONNECTTIMEOUT_MS: Indefinida
  • CURLOPT_ACCEPTTIMEOUT_MS: 60 segundos

respuesta anterior (para referencia):

Mi entendimiento es que CURL obedece a la default_socket_timeout menos anulado con CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT.

$socket_timeout = ini_get('default_socket_timeout'); // timeout in seconds 
+7

¿Puedes respaldar esto? No pude encontrar nada para probar esto en los enlaces de curl de PHP (https: // github.com/php/php-src/blob/master/ext/curl/interface.c). También intenté configurar mi configuración de 'default_socket_timeout' ini en 1 y descargué un archivo grande, pero curl nunca excedió el tiempo de espera, lo que implica que el valor predeterminado de 0 (indefinido) todavía se estaba utilizando. Luego establecí explícitamente un valor de CURLOPT_TIMEOUT de un segundo en un manejador curl, intenté descargar el mismo archivo y noté que la conexión definitivamente se cortó después de 1 segundo. –

+5

El comentario de @MichaelDowling proporciona más información y evidencia para responder a esta pregunta. –

+4

¿Por qué esta respuesta está marcada como correcta? – jayarjo

73

Depende de qué configuración de tiempo de espera esté hablando.

cURL ofrece varias opciones específicas para la configuración del tiempo de espera de la conexión. Algunas de estas opciones tienen un límite establecido, mientras que otras permiten que las transferencias tomen un tiempo indefinido. Con el fin de entender qué valores tienen una configuración predeterminada y cuáles no, tiene que mirar a curl_easy_setopt() función de libcurl: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

libcurl enumera los siguientes ajustes específicos de espera de conexión:

  • CURLOPT_FTP_RESPONSE_TIMEOUT: No hay valor predeterminado (indefinida)
  • CURLOPT_TIMEOUT: sin valor predeterminado (indefinida)
  • CURLOPT_TIMEOUT_MS: sin valor predeterminado (indefinida)
  • CURLOPT_CONNECTTIMEOUT: predeterminados a 300 segundos
  • CURLOPT_CONNECTTIMEOUT_MS: No defecto
  • CURLOPT_ACCEPTTIMEOUT_MS: Por defecto es 60000 ms

El código fuente de PHP no anula ninguna de las configuraciones predeterminadas anteriores: https://github.com/php/php-src/blob/master/ext/curl/interface.c. El parámetro sólo algo relacionado que anulan los enlaces de PHP es CURLOPT_DNS_CACHE_TIMEOUT, cambiando el valor por defecto de 60 segundos a 120 segundos: https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926

Una de las otras respuestas indicó que PHP fijará CURLOPT_TIMEOUT al valor especificado en la configuración ini default_socket_timeout. No pude encontrar nada en el código fuente de PHP para respaldar este reclamo, y no pude activar un tiempo de espera de cURL al descargar un archivo muy grande con una configuración de default_socket_timeout de 1 segundo.

+0

El tiempo de espera predeterminado es 0 (cero) lo que significa que nunca se agota el tiempo durante la transferencia. http://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html – diyism

+1

Sí. Eso está en mi respuesta: 'CURLOPT_TIMEOUT: Sin valor predeterminado (indefinido)' –

Cuestiones relacionadas