如何在php中有效地找到文件夹内容的最后修改时间

时间:2013-12-14 17:27:31

标签: php

我需要对文件夹进行检查以查看上次修改的时间。我的意思是它最后一次,或者它包含上次修改的任何文件。

到目前为止,我尝试了两种方法:

  1. 在文件夹上使用stat()函数,然后抓取mtime

    $stat = stat("directory/path/");
    echo $stat["mtime"];
    
  2. 使用文件夹

    上的filemtime()功能
    echo (filemtime("directory/path/"));
    
  3. 这两个方法都返回相同的值,如果我更新其中一个文件,则此值不会更改。我猜这是因为文件夹结构本身不会改变,只有其中一个文件的内容。

    我想我可以遍历目录中的所有文件并检查它们的修改日期,但是可能有很多文件,这看起来效率不高。

    有人可以建议我如何以有效的方式获取文件夹及其内容的最后修改时间吗?

1 个答案:

答案 0 :(得分:1)

MOI

我建议您使用foreach函数循环所有文件并使用它,我认为没有用于此目的的功能。这是使用该循环的非常简单的示例:

$directory = glob('gfd/*');
foreach ($directory as $file) {
    $mdtime = date('d.m.Y H:i:s', filemtime($file));
}
echo "Folder last modified: $mdtime<br />"; 

请记住foreach非常快,如果你有文件&lt; 3000,我认为没有什么可担心的。如果您不想使用它,您可以随时将修改日期保存到文件或类似的东西。 :)

子文件夹兼容性:

function rglob($pattern, $flags = 0) {
    $files = glob($pattern, $flags); 
     foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
         $files = array_merge($files, rglob($dir.'/'.basename($pattern), $flags));
     }
     return $files;
}

请参阅此问题:php glob - scan in subfolders for a file