【问题标题】:How to check API request timeout by using Curl?如何使用 Curl 检查 API 请求超时?
【发布时间】:2016-08-28 01:45:05
【问题描述】:

我有一个场景。在这里,我使用 Curl 来访问 API。 如果无法访问 API,我必须发送警报电子邮件。那么如何检查是否有请求超时?

这是我的代码。

    $alerthttp1 = array();
    $string = 'somestring';
    $key = md5($string);
    $service_url = 'www.someurl.com/'.$key;

    $curl = curl_init($service_url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 300);
    $curl_response = curl_exec($curl);
    $curl_errno = curl_errno($curl);
    $curl_error = curl_error($curl);

    error_log(json_encode($curl_errno));
    error_log(json_encode($curl_error));

    if(curl_error($curl) || $curl_response === false || $curl_errno > 0)
    {
        $info = curl_getinfo($curl);
        hlog_errorlog('error occured during curl exec - ' . var_export($info));
        hlog_errorlog('error -----------> '. $curl_error); 
        curl_close($curl);

        $alerthttp1[] = array('status' => 'FAILED');//for email alert
    }

请建议我,最好的编码方式。

谢谢

【问题讨论】:

标签: php api curl timeout connection-timeout


【解决方案1】:

尝试使用 CURLOPT_CONNECTTIMEOUT 代替 CURLOPT_TIMEOUT CURLOPT_CONNECTTIMEOUT 是允许与服务器建立连接的最长时间(以秒为单位)。

【讨论】:

    【解决方案2】:

    不,你不能用 CURL 知道它。询问 API 支持。或者自己选择超时时间。通常是 30 秒。

    【讨论】:

    • CURLOPT_CONNECTTIMEOUT 告诉 cURL 等待连接完成以使其正常工作的最长时间
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 2011-06-27
    • 1970-01-01
    • 2013-11-05
    • 2013-02-18
    • 1970-01-01
    • 2019-09-27
    • 2014-08-15
    相关资源
    最近更新 更多