PHP - 下载文件并保留时间戳?

时间:2016-01-29 11:23:00

标签: php file-get-contents last-modified

顾名思义,是否有一种快速下载文件的方法,但是带上时间戳?

我正在编写一个基本缓存,除其他检查外,还确定(通过get_headers)给定的本地文件是否与其远程对应文件相同。

我知道我可以file_get_contents / file_put_contents然后touch()文件的结果为get_headers,但调用正在进行另一次HTTP调用(即使它是一个HEAD电话)我只想测试Last-Modified作为最后的手段。

那么有一个快速的,#34;一个HTTP呼叫"下载文件并保留时间戳的方法?一些远程文件存在于FTP服务器上,但许多是文本文件,和/或存在于Web服务器上。

编辑:有人提出了一个相关的问题,但我的问题有所不同,因为我希望得到远程修改日期,而不必进行第二次调用,基于copy()的答案建议

$http_response_header似乎可以解决问题,如下所示。

3 个答案:

答案 0 :(得分:1)

您可以从$http_response_header获取缓存Last-Modified并使用它来触摸该文件。

要完全自动化它显然是不可能的,因为流不知道你要在哪里存储它。

答案 1 :(得分:0)

您可以使用filemtime()获取上次修改日期,然后触摸()以修改上次修改日期/时间

来源:PHP copy file without changing the last modified date

答案 2 :(得分:0)

if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 5 ))) {
   // Cache file is less than five minutes old. 
   // Don't bother refreshing, just use the file as-is.
   $file = file_get_contents($cache_file);
} else {
   // Our cache is out-of-date, so load the data from our remote server,
   // and also save it over our cache for next time.
   $file = file_get_contents($url);
   file_put_contents($cache_file, $file, LOCK_EX);
}