PHP:默认的cURL超时值

Rap*_*tor 59 php curl

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

Mic*_*ing 88

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

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

  • 是的。这是我的回答:`CURLOPT_TIMEOUT:无默认值(不确定)` (2认同)

dtb*_*rne 34

默认值如下:

  • 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
Run Code Online (Sandbox Code Playgroud)

  • 你可以支持吗?我在PHP curl绑定中找不到任何证据来证明这一点(https://github.com/php/php-src/blob/master/ext/curl/interface.c).我还尝试将我的`default_socket_timeout` ini设置为1并下载了一个大文件,但curl从未超时 - 暗示仍然使用默认值0(不确定).然后,我在curl句柄上显式设置了一秒的CURLOPT_TIMEOUT值,尝试下载相同的文件,我注意到1秒后连接肯定会被缩短. (8认同)
  • @MichaelDowling的评论提供了更多的信息和证据来回答这个问题. (5认同)
  • 这些开发人员[似乎同意](https://github.com/owncloud/core/pull/3563) - CURL不尊重PHP的`default_socket_timeout`. (2认同)