【发布时间】:2011-12-20 09:35:18
【问题描述】:
我试图使用 PHP 从同一站点读取页面。我遇到了这个good discussion 并决定使用建议的 cURL 方法:
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$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;
return $header;
}
//Now get the webpage
$data = get_web_page( "https://www.google.com/" );
//Display the data (optional)
echo "<pre>" . $data['content'] . "</pre>";
所以,就我而言,我这样称呼get_web_page:
$target_url = "http://" . $_SERVER['SERVER_NAME'] . "/press-release/index.html";
$page = get_web_page($target_url);
令我无法理解的是,它在我所有的测试服务器上都能正常工作,但只有一个。我已经验证了 cURL 在有问题的服务器上可用。此外,设置 `$target_url = "http://www.google.com" 工作正常。所以,我非常肯定罪魁祸首与 cURL 库无关。
可能是因为某些服务器阻止自己被这种类型的脚本“抓取”?或者,也许我只是在这里遗漏了什么?
先谢谢了。
类似问题:
【问题讨论】:
-
您是否收到任何错误消息或意外输出?
-
@Jack Maney:不,我的脚本/页面一直在“尝试”(浏览器看起来正忙于加载某些内容)直到超时。