`

curl的timeout 崩溃问题

阅读更多
最近供一个服务用到了curl,发现一件奇怪的事。
curl的超时如果设置<1000ms的话有可能会返回失效甚至崩溃...
到网上查了一下原因:
CURLOPT_TIMEOUT_MS
The maximum number of milliseconds to allow cURL functions to execute. If libcurl is built to use the standard system name resolver, that portion of the connect will still use full-second resolution for timeouts with a minimum timeout allowed of one second. 
官方文档上说curl的超时只支持秒级,因为curl底层的select()调用超时位1000ms。

如果要完成毫秒级的超时,可以使用curl_multi_select()。或者修改原代码。可以参见一个同行的连接:
http://hi.baidu.com/tarotme/blog/item/07bdaefb6921c4284f4aeaec.html
分享到:
评论

相关推荐

    Curl.zip_C++ curl_DEMO_c++ curl_curl_curl c++

    - 使用`curl_easy_setopt()`函数设置会话的各种选项,如URL(`CURLOPT_URL`)、HTTP方法(`CURLOPT_CUSTOMREQUEST`)、超时时间(`CURLOPT_TIMEOUT`)等。 - 调用`curl_easy_perform()`执行请求。 - 最后,记得...

    php curl nginx 499 错误

    检查你的cURL请求中是否设置了适当的`CURLOPT_TIMEOUT`和`CURLOPT_CONNECTTIMEOUT`选项。 2. **Nginx配置**:Nginx的keepalive超时设置也可能导致这个问题。如果客户端在keepalive超时后没有发送新的请求,Nginx...

    curl下载curl包下载

    下载`curl`包的过程非常简单,首先,你需要访问`curl`的官方网站或者通过软件仓库(如APT for Ubuntu或YUM for CentOS)获取最新版本。官网地址是&lt;https://curl.se/download.html&gt;。在网站上,你可以找到适用于不同...

    CUrlHttp封装curl类

    CUrlHttp类通过`setOpt()`方法,允许开发者设置curl的各种选项,如超时时间(`CURLOPT_TIMEOUT`), 用户代理(`CURLOPT_USERAGENT`), 自定义头文件(`CURLOPT_HTTPHEADER`)等,以满足不同场景的需求。 4. **响应处理**...

    curl手册 用curl的

    此外,cURL 还提供了其他许多选项,如设置请求方法(`CURLOPT_CUSTOMREQUEST`)、自定义头信息(`CURLOPT_HTTPHEADER`)、超时时间(`CURLOPT_TIMEOUT`)等,可以根据实际需求灵活配置。 总的来说,PHP cURL 提供了...

    php下curl用法详解

    curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); ``` 6. **错误处理**: 检查cURL是否出现错误,使用`curl_errno()`和`curl_error()`函数。 ```php if (curl_...

    curl-7.53.1_spendrhy_curl_aix7.1安装curl_

    4. **RELEASE-NOTES**: 这个文件详细描述了`curl-7.53.1`版本的主要特性、已知问题和改进。它对评估是否升级或迁移至这个版本很有帮助。 5. **.github**: 这个目录可能包含与GitHub相关的配置文件,如自动化的测试...

    php之curl设置超时实例

    1. **CURLOPT_TIMEOUT**: 这个选项用来设置cURL允许执行的最长秒数。如果你设置了一个时间限制,例如60秒,那么如果在60秒内没有接收到任何响应,cURL会抛出一个错误并停止执行。在下面的示例代码中,你可以看到如何...

    CURL详解 资料.doc

    例如,设置超时时间:`curl_setopt($ch, CURLOPT_TIMEOUT, 30)`,或者设置是否将结果写入文件:`curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)`。 3. `curl_exec()`: 执行CURL会话,接收`curl_init()`返回的句柄...

    cURL(curl-8.4.0)

    curl-8.4.0.tar.gz curl-8.4.0.zip

    curl命令详解 curl命令详解 curl命令详解 curl命令详解curl命令详解 curl命令详解 curl命令详解

    curl 命令详解 curl 命令是一种强大的命令行工具,用于传输数据规范的命令行工具,支持包括 HTTP、HTTPS、SCP、SFTP、TFTP 等多种协议。该命令可以用来下载和上传文件、查看 HTTP 头信息、设置 Cookie 和代理服务器...

    java--curl工具,用于生成curl链接,直接在服务器上使用

    当遇到服务间通信问题时,开发者不再需要手动构造curl命令,只需查看生成的curl命令,就能在任何支持curl的环境(如本地开发环境或测试服务器)中复现问题,从而加速问题排查。 总的来说,这个Java工具包结合了...

    WWW-Curl-4.17.tar_curl_www_www-curl_Perl_

    - **错误处理**:提供丰富的错误处理机制,便于调试和问题排查。 5. **安装和使用**: 在 Perl 环境中,要使用 `WWW::Curl` 模块,首先需要通过 CPAN 安装。执行 `cpan WWW::Curl` 即可自动下载并安装。然后在 ...

    php curl批量请求url

    本篇文章将深入探讨如何使用PHP的cURL库进行批量URL请求,并关注可能遇到的问题及解决方案。 首先,批量请求URL通常是为了提高效率,例如在数据抓取、接口测试或自动化任务中。批量请求的关键在于创建一个循环,...

    Curl获取网络时间.zip_Curl获取网络时间_curl 时间_curl 网络时间_网络时间 curl_网络时间获取

    curl_easy_setopt(curl, CURLOPT_URL, "http://worldtimeapi.org/api/timezone/utc"); // 设置回调函数 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); // 执行请求 res = curl_easy_perform...

    curl https://github.com/curl/curl.git

    5. **GitHub**:GitHub 是一个基于云的 Git 仓库托管平台,提供代码版本控制、协作、问题追踪等功能,是开源项目的主要平台之一。用户可以免费托管公共项目,或付费托管私有项目。 综上所述,`curl ...

    Centos环境下安装curl

    ### Centos环境下安装curl #### 一、概述 在Linux环境下安装配置curl是非常常见的操作,尤其是在需要通过PHP脚本来执行HTTP请求的情况下。curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持多种协议...

    php采用curl访问域名返回405 method not allowed提示的解决方法

    7. 清除DNS缓存和设置超时:通过`CURLOPT_DNS_CACHE_TIMEOUT`和`CURLOPT_CONNECTTIMEOUT`、`CURLOPT_TIMEOUT`选项清除DNS缓存并设置连接超时和访问超时。 8. 设置User-agent:通过`CURLOPT_USERAGENT`选项设置用户...

    centos7 curl离线安装包

    在没有网络连接或者网络环境不稳定的情况下,离线安装`curl`就显得尤为重要。对于CentOS 7系统,我们可以遵循以下步骤进行离线安装`curl`。 首先,你需要确保拥有`curl`的RPM包。在提供的信息中,压缩包文件名为`...

Global site tag (gtag.js) - Google Analytics