如何获取上次修改目录的时间?
问题描述:
我看着这个其他问题:如何获取上次修改目录的时间?
告诉我的东西是如何工作的,但并没有真正提供任何解决方案。我如何获得上次修改目录的时间?我将使用这段时间来确定是否需要清除缓存,其内容是从目录的内容计算出来的。
另一种方法是逐个递归遍历每个文件和子文件夹,但这可能完全否定缓存的好处。据我所知,文件/文件夹的“mtime”和其他元数据被缓存在某处,并且实际上每次你想检查时都不需要读文件(这就是为什么在每个memcached文件上检查mtime仍然是比加载文件本身更快,即使文件很小)。
那么...有没有什么好的,快速的方法来获取整个目录的最后修改时间戳?
答
那么你总是可以做ls -la来获取目录文件的时间戳,但我不认为这就是你要求的。
您不包括什么语言或环境中,你希望这个解决了,但它是相当容易在PHP中:
$filename = 'includes/';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
//echos includes/ was last modified: September 06 2011 17:51:10.
这些信息不会获取由操作系统缓存,但你可以擦高速缓存与:
我在Python的工作,但我想如果这是可行的会有各种语言模拟。这只是最后一次修改“目录”,并且不会在单个文件中找到更改,对吧? –
嗯,是的,不,filemtime方法可以用于目录或文件。我的例子已设置为检查一个目录。但是,检查文件会非常容易。只需使用opendir()来读取目录中的所有文件,并且您也可以轻松地检查这些文件。 – Landon
问题是目录很深(5-6级?),里面有很多文件。除非来自opendir()的文件列表也被缓存,否则它的检查缓存失效花费可能比缓存首先给我的花费更多。我会运行一些基准。 –