PHP:默认的cURL超时值
什么是默认的PHP cURL超时值? 我可以从编码中获得价值吗?
默认值如下:
- 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
这取决于你正在谈论的超时设置。
cURL提供了特定于连接超时设置的各种选项。 其中一些选项有一个设定的限制,而另一些选项则允许转账采取无限期的时间。 为了理解哪些值具有默认设置,哪些值没有,您需要查看libcurl的curl_easy_setopt()
函数: http : curl_easy_setopt()
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源代码中find任何东西来备份这个声明,而且我无法通过下载一个非常大的文件来触发cURL超时,这个文件的default_socket_timeout
设置为1秒。
没有在libcurl。 http://curl.haxx.se/mail/lib-2003-05/0097.html
在脚本中直接指定这个值可能会更容易些?
curl_setopt($curl_handler, CURLOPT_TIMEOUT, 30); // 30 seconds