【发布时间】:2012-05-05 17:44:34
【问题描述】:
什么是默认的 PHP cURL 超时值?我可以从编码中获得价值吗?
【问题讨论】:
什么是默认的 PHP cURL 超时值?我可以从编码中获得价值吗?
【问题讨论】:
libcurl 中没有。 http://curl.haxx.se/mail/lib-2003-05/0097.html
【讨论】:
默认如下:
上一个答案(供参考):
我的理解是 CURL 遵循 default_socket_timeout 除非被 CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT 覆盖。
$socket_timeout = ini_get('default_socket_timeout'); // timeout in seconds
【讨论】:
default_socket_timeout ini 设置设置为 1 并下载了一个大文件,但 curl 从未超时——这意味着仍在使用默认值 0(无限期)。然后我在 curl 句柄上显式设置了一秒的 CURLOPT_TIMEOUT 值,尝试下载相同的文件,我注意到连接在 1 秒后肯定被切断了。
default_socket_timeout。
这取决于您所说的超时设置。
cURL 提供了各种特定于连接超时设置的选项。其中一些选项有一个设定的限制,而其他选项则允许转移花费无限的时间。为了了解哪些值有默认设置,哪些没有,需要查看 libcurl 的 curl_easy_setopt() 函数:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
libcurl 列出了以下连接超时特定设置:
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 超时。
【讨论】:
CURLOPT_TIMEOUT: No default (indefinite)