当前位置:   article > 正文

PHP curl 超时时间设置

php curl 超时时间

CURLOPT_TIMEOUT好理解,就是整个curl请求过程(http request & response)的超时限制,以秒为单位,设置为0则无限制。 
CURLOPT_CONNECTTIMEOUT比较难理解,目前确认的是,这是curl请求过程中的一小部分,因此必须要设得比CURLOPT_TIMEOUT小,不然CURLOPT_TIMEOUT无意义。网上的资料是这么说的:

CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。

这个发起连接前等待的时间比较模糊,我倾向于这指的是完成TCP三次握手过程前所耗费的时间,或者换句话说,TCP三次握手的整个过程必须要在CURLOPT_CONNECTTIMEOUT内完成,否则就超时。TCP三次握手无法在指定时间内完成表示服务器正处在繁忙/奔溃的状态或网络异常,这正符合本文所提到的场景。 
基于这一猜想下,我把CURLOPT_CONNECTTIMEOUT设成3秒:

curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 3);

如此,就不需要在网络抖动的时候等待2分钟(SDK设定的CURLOPT_CONNECTTIMEOUT是120秒)才报错了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/624373
推荐阅读
相关标签
  

闽ICP备14008679号