顾名思义,是否有一种快速下载文件的方法,但是带上时间戳?
我正在编写一个基本缓存,除其他检查外,还确定(通过get_headers
)给定的本地文件是否与其远程对应文件相同。
我知道我可以file_get_contents
/ file_put_contents
然后touch()
文件的结果为get_headers
,但调用正在进行另一次HTTP调用(即使它是一个HEAD电话)我只想测试Last-Modified作为最后的手段。
那么有一个快速的,#34;一个HTTP呼叫"下载文件并保留时间戳的方法?一些远程文件存在于FTP服务器上,但许多是文本文件,和/或存在于Web服务器上。
编辑:有人提出了一个相关的问题,但我的问题有所不同,因为我希望得到远程修改日期,而不必进行第二次调用,基于copy()
的答案建议
$http_response_header
似乎可以解决问题,如下所示。
答案 0 :(得分:1)
您可以从$http_response_header
获取缓存Last-Modified
并使用它来触摸该文件。
要完全自动化它显然是不可能的,因为流不知道你要在哪里存储它。
答案 1 :(得分:0)
您可以使用filemtime()获取上次修改日期,然后触摸()以修改上次修改日期/时间
答案 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);
}