67

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

4

3 回答 3

98

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

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 将设置为ini 设置中CURLOPT_TIMEOUT指定的值。default_socket_timeout我无法在 PHP 源代码中找到任何内容来支持此声明,并且我无法通过下载一个default_socket_timeout设置为 1 秒的非常大的文件来触发 cURL 超时。

于 2013-04-12T23:38:31.477 回答
39

默认值如下:

  • 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
于 2012-04-26T20:41:15.613 回答
10

libcurl 中没有。http://curl.haxx.se/mail/lib-2003-05/0097.html

于 2012-04-25T05:14:31.673 回答