我正在对页面执行curl请求。我已经设置了'CURLOPT_TIMEOUT'(到6秒)和'CURLOPT_CONNECTTIMEOUT'(到4秒) - 两者都适用于大多数URL。
然而,当一个网页没有响应时(最终导致CURL通过'无法解决主机'错误(err_no 6)) - 似乎'CURLOPT_TIMEOUT'没有效果,卷曲将等待,可能是无限期或直到一些“其他”超时到期。
使用我尝试访问的URL,CURL在返回之前似乎总是需要15秒(这与'CURLOPT_TIMEOUT'或'CURLOPT_CONNECTTIMEOUT'无关。
有人可以告诉我如何限制CURL花费在尝试解析主机上的时间吗?
答案 0 :(得分:3)
那么你手上有3次超时。
PHP中的cURL没有设置此超时的默认方法,我建议使用另一种超时方法解析主机名,然后将IP传递给cURL。
答案 1 :(得分:2)
在使用cURL之前更改dns解决超时
putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
答案 2 :(得分:0)
实际上,CURLOPT_CONNECTTIMEOUT包含dns查询时间。在php 5.4.9中测试。