2010-12-22 139 views
1

在PHP中,有时我想向远程站点发送HTTP请求以查看响应头,因此我手动声明了所有内容,并使用fsock_open()函数。但是,这比使用远程URL(加载整个页面内容)调用file_get_contents()要慢得多。为什么是这样?是否有一种很好的替代方法来获取响应头(例如,检查页面是否返回404错误),其运行速度可达file_get_contents()为什么file_get_contents()比使用fsock_open()更快?

+0

应该无动于衷。你可能做了一些不同的事情,但是我们不能说没有代码。如果您只对标题感兴趣,您还应该发送HEAD请求。 – Artefacto 2010-12-22 03:31:55

回答

0

你刚刚尝试过使用卷曲吗?如果需要,您可以返回标题以及内容。

$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的服务器的问题。

相关问题