Caching 如何获取上次修改目录的时间?

Caching 如何获取上次修改目录的时间?,caching,filesystems,operating-system,directory,memcached,Caching,Filesystems,Operating System,Directory,Memcached,我在看另一个问题: 这告诉了我东西是如何工作的,但并没有给出任何解决方案。如何获取上次修改目录的时间?我将利用这段时间来确定是否需要清除缓存,缓存的内容是根据目录的内容计算的 另一种选择是递归每个文件和子文件夹,但这可能会完全否定缓存的任何好处。据我所知,文件/文件夹的“mtime”和其他元数据被缓存在某个地方,实际上并不需要每次检查时都读取文件(这就是为什么在每个memcached文件上检查mtime仍然比加载文件本身快得多,即使文件很小) 所以。。。有没有什么好的、快速的方法来获取整个目录

我在看另一个问题:

这告诉了我东西是如何工作的,但并没有给出任何解决方案。如何获取上次修改目录的时间?我将利用这段时间来确定是否需要清除缓存,缓存的内容是根据目录的内容计算的

另一种选择是递归每个文件和子文件夹,但这可能会完全否定缓存的任何好处。据我所知,文件/文件夹的“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()读取目录中的所有文件,您也可以轻松地检查这些文件。问题是目录非常深(5-6级?),其中包含大量文件。除非opendir()中的文件列表也被缓存,否则检查缓存无效的代价可能比缓存一开始给我的代价还要高。我将运行一些基准测试。目录的深度无关紧要,只需在检查统计数据之前调用clearstatcache(),就可以了。我在过去做过这件事,而且这些函数没有多少时间开销。