我需要检查远程文件是否在线并且它们没有改变。问题是这些文件很大,所以我只想读取http头,然后中止请求。结果将基于响应状态码和内容长度字段。如何从PHP发送不完整的HTTP请求?
我该如何在PHP中做到这一点?
我需要检查远程文件是否在线并且它们没有改变。问题是这些文件很大,所以我只想读取http头,然后中止请求。结果将基于响应状态码和内容长度字段。如何从PHP发送不完整的HTTP请求?
我该如何在PHP中做到这一点?
您可以使用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);
谢谢,那就是我一直在寻找的。 – NeDark
这两种方法之间存在微妙的差异(但可能很重要)。 'get_headers()'发送一个正常的GET请求并在头部被接收后立即销毁连接。用'... NOBODY'发送一个HEAD请求。 cURL方法稍微快一点,但也可能返回不完整/不正确的图片,具体取决于您请求的对象和您请求的服务器。这些都不会允许你执行GET请求以外的其他任何操作,并返回头部(HEAD应该模拟GET)。 – DaveRandom
cURL示例不起作用,我发现'curl_setopt($ ch,CURLOPT_HEADER,TRUE); '失踪了。 – NeDark
的可能重复[查看某网址在PHP中存在(http://stackoverflow.com/questions/2280394/check-if-an -url-exists-in-php) – Gordon
更多http://stackoverflow.com/search?q=check+if+link+exists+php – Gordon