当curl尝试解析主机时,如何更改php curl超时(curl err_no 6)

Tom*_*ell 5 php dns curl timeout

我正在对页面执行curl请求.我已经设置了'CURLOPT_TIMEOUT'(到6秒)和'CURLOPT_CONNECTTIMEOUT'(到4秒) - 并且两者都适用于大多数URL.

但是,当一个网页没有响应时(并最终导致CURL通过'无法解决主机'错误(err_no 6)) - 似乎'CURLOPT_TIMEOUT'没有效果,curl将等待,可能是无限期或直到某些'其他' '超时到期.

使用我想要访问的URL,CURL在返回之前似乎总是花费大约15秒(这与'CURLOPT_TIMEOUT'或'CURLOPT_CONNECTTIMEOUT'无关.

有人可以告诉我如何限制CURL花费在尝试解析主机上的时间吗?

Orb*_*ing 3

好吧,你有 3 个暂停机会。

  1. CURLOPT_TIMEOUT - 整个操作花费多长时间
  2. CURLOPT_CONNECTTIMEOUT - cURL 等待主机响应其请求的时间
  3. DNS 查找超时 - 您所遇到的情况是,DNS 查询失败并且需要一定的时间才能执行此操作

PHP 中的 cURL 没有设置此超时的默认方法,我建议使用另一种具有超时的方法解析主机名,然后将 IP 传递给 cURL。