从网址获取时为什么卷曲超时?

时间:2018-04-28 04:00:09

标签: php curl

为什么PHP中的cURL会在从网页上获取HTML时返回超时消息?

这是PHP代码。

function getFromUrl( $url )
{
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $result = curl_exec($curl);

  if (curl_errno($curl))
  {
    echo 'Error:' . curl_error($curl) . '<br>' ;
  }

  curl_close($curl);

  return $result ;
}

当我使用www.google.com作为网址运行该功能时,我得到了预期的结果。

  $url = 'http://www.google.com' ;
  $result = getFromUrl($url) ;

但是,当我在第二个Web服务器上传入网页的URL时,我收到超时响应。将其粘贴到浏览器中时存在URL。为什么超时消息?

$url = "http://xxx.54.20.170:10080/accounting/tester/hello.html" ;
echo $url . '<br>' ;
$rv = getFromUrl( $url ) ;
echo  $rv . '<br>' ;

这是cURL错误消息:

错误:无法连接到xxx.54.20.170端口10080:连接超时

我希望将数据从一个Web服务器传输到另一个Web服务器。

感谢,

1 个答案:

答案 0 :(得分:0)

对于PHP,

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds

从终端首先使用以下额外选项检查卷曲是否正常工作。

  

- 连接超时       允许连接的最长时间(以秒为单位)       服务器。这仅限制连接阶段一次       curl已连接此选项不再使用。自7.32.0起,       此选项接受十进制值,但实际超时将       由于指定的超时时间增加,精度会降低       精确度。另请参阅-m, - max-time选项。

If this option is used several times, the last one will be used.

  

-m, - max-time       允许整个操作的最长时间(以秒为单位)       采取。这对于防止批处理作业挂起很有用       由于网络速度缓慢或链接断开而持续数小时。以来       7.32.0,此选项接受十进制值,但实际时间 -       当指定的超时增加时,out将降低准确性       以十进制精度。另请参阅--connect-timeout选项。

If this option is used several times, the last one will be used.

尝试使用它们来增加超时时间。

卷曲不起作用的原因有很多。其中一些可以, 1)响应时间很慢。 2)很少有网站检查几个标头参数来响应请求。这些参数包括User-Agent,Referer等,以确保它来自有效的来源,而不是来自机器人。