【发布时间】:2011-09-26 22:29:08
【问题描述】:
我正在使用 PHP cURL 模块通过 HTTP 标头提取远程文件的时间戳。我已经设法通过使用CURLOPT_FILETIME 常量来获取修改时间戳。当然,我这样做也是为了查看远程文件是否已更改而无需下载其内容。
$ch = curl_init($url); /* create URL handler */
curl_setopt($ch, CURLOPT_NOBODY, TRUE); /* don't retrieve body contents */
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); /* follow redirects */
curl_setopt($ch, CURLOPT_HEADER, FALSE); /* retrieve last modification time */
curl_setopt($ch, CURLOPT_FILETIME, TRUE); /* get timestamp */
$res = curl_exec($ch);
$timestamp = curl_getinfo($ch, CURLINFO_FILETIME);
curl_close($ch);
在您看来,检查远程文件是否已更改的最佳方法是什么?我应该只进行时间戳检查吗?或者还有其他一些我没有想到的聪明的选择?!
【问题讨论】:
-
如果你有ftp访问权限,你可以找出实际的文件修改时间。
-
你为什么关注重定向?比较文件大小也有助于了解更改。并且可能存在 ETAG 标头值。
-
我遵循重定向,因为我希望最终得到一个图像文件,并且用户可能会提供一个缩短的链接。 OTOH,
ETAG可能会提供,但并非总是如此。当然,我也会检查文件大小。