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秒)才报错了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值