PHP:默认的cURL超时值

时间:2012-04-25 03:22:43

标签: php curl

默认的PHP cURL超时值是多少?我可以从编码中获取值吗?

3 个答案:

答案 0 :(得分:82)

这取决于您所谈论的超时设置。

cURL提供特定于连接超时设置的各种选项。其中一些选项具有设定限制,而其他选项允许转移无限期。为了了解哪些值具有默认设置而哪些值没有,您需要查看libcurl的curl_easy_setopt()函数:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

libcurl列出了以下连接超时特定设置:

  • CURLOPT_FTP_RESPONSE_TIMEOUT:无默认(无限期)
  • CURLOPT_TIMEOUT:无默认(无限期)
  • CURLOPT_TIMEOUT_MS:无默认(无限期)
  • CURLOPT_CONNECTTIMEOUT:默认为300秒
  • CURLOPT_CONNECTTIMEOUT_MS:无默认
  • CURLOPT_ACCEPTTIMEOUT_MS:默认为60000毫秒

PHP源代码不会覆盖以上任何默认设置:https://github.com/php/php-src/blob/master/ext/curl/interface.c。 PHP绑定覆盖的唯一有点相关的参数是CURLOPT_DNS_CACHE_TIMEOUT,将默认值从60秒更改为120秒:https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926

其他一个答案表明PHP会将CURLOPT_TIMEOUT设置为default_socket_timeout ini设置中指定的值。我无法在PHP源代码中找到任何内容来备份此声明,并且我无法通过下载default_socket_timeout设置为1秒的非常大的文件来触发cURL超时。

答案 1 :(得分:30)

默认值如下:

  • CURLOPT_FTP_RESPONSE_TIMEOUT:无限期
  • CURLOPT_TIMEOUT:无限期
  • CURLOPT_TIMEOUT_MS:无限期
  • CURLOPT_CONNECTTIMEOUT:300秒
  • CURLOPT_CONNECTTIMEOUT_MS:无限期
  • CURLOPT_ACCEPTTIMEOUT_MS:60秒

上一个答案(供参考):

我的理解是CURL服从default_socket_timeout,除非用CURLOPT_TIMEOUT / CURLOPT_CONNECTTIMEOUT覆盖。

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

答案 2 :(得分:9)