我正在尝试解析此网站:http://www.mz.gov.kz/ru/news,但我收到504错误。将connection_timeout
更改为60秒后,我得到28 error: connect timed out
。在另一台服务器上运行良好。也许我的IP被封锁了,我不知道。我的功能是
function get_web_page($url)
{
$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_COOKIEFILE,"d://coo.txt");
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
//echo $errmsg.'s<br>';
/*foreach($header as $key=>$value){
echo $key.' -- > '.$value.'<br>';
}*/
return $header;
}
答案 0 :(得分:0)
您的代码有效。
504
错误表示服务器端发生了一些问题,特别是您发出的请求需要(执行)的时间超过服务器配置允许的最大值,在这种情况下,在60到120秒之间。
如果响应错误代码为“正版”,则服务器可能会过载,或者您实际上正在发出导致超时的特定请求。
另一种选择可能是你的IP被禁止,服务器只是让连接超时作为“防御”措施,但这种情况非常罕见(根据我的经验)。 通常,当禁止IP时,连接才会被拒绝。更容易实现,减少资源消耗。