2011-09-04 82 views
0

我需要检查远程文件是否在线并且它们没有改变。问题是这些文件很大,所以我只想读取http头,然后中止请求。结果将基于响应状态码和内容长度字段。如何从PHP发送不完整的HTTP请求?

我该如何在PHP中做到这一点?

+0

的可能重复[查看某网址在PHP中存在(http://stackoverflow.com/questions/2280394/check-if-an -url-exists-in-php) – Gordon

+0

更多http://stackoverflow.com/search?q=check+if+link+exists+php – Gordon

回答

5

您可以使用get_headers()函数。

如果你喜欢cURL,您可以使用CURLOPT_NOBODY

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

$headers = curl_exec($ch); 
+0

谢谢,那就是我一直在寻找的。 – NeDark

+3

这两种方法之间存在微妙的差异(但可能很重要)。 'get_headers()'发送一个正常的GET请求并在头部被接收后立即销毁连接。用'... NOBODY'发送一个HEAD请求。 cURL方法稍微快一点,但也可能返回不完整/不正确的图片,具体取决于您请求的对象和您请求的服务器。这些都不会允许你执行GET请求以外的其他任何操作,并返回头部(HEAD应该模拟GET)。 – DaveRandom

+0

cURL示例不起作用,我发现'curl_setopt($ ch,CURLOPT_HEADER,TRUE); '失踪了。 – NeDark