在PHP中,有时我想向远程站点发送HTTP请求只是为了查看响应头,所以我手动声明它并使用fsock_open()
函数。但是,这比使用远程URL(加载整个页面内容)调用file_get_contents()
要慢得多。为什么是这样?是否有一种很好的替代方法来获取响应头(例如,检查页面是否返回404错误),其工作速度与file_get_contents()
一样快?
答案 0 :(得分:0)
你刚试过使用curl吗?如果需要,您可以取回标题和内容。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/
2008120122 Firefox/3.0.5";
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
这将追逐重定向,这并不总是需要。
查看http://php.net/manual/en/function.curl-getinfo.php,了解您在$info
中收到的内容。
您可以尝试仅执行HEAD请求而不是GET(CURLOPT_NOBODY
选项),但我遇到了一些因某些原因拒绝HEAD的服务器的问题。