为什么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服务器。
感谢,
答案 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等,以确保它来自有效的来源,而不是来自机器人。