Php - 文件夹最后修改日期时间 -

时间:2011-06-18 17:15:28

标签: php windows file datetime directory

我正在编写脚本来创建所有文件和文件夹的列表, 当下次运行时,我想检查自上次以来文件夹是否被修改,如果没有,则排除此时读取文件夹,

我使用filemtime()和stat()函数,

它有效,当我在子文件夹中添加新文件时,日期正在改变,但如果我编辑文件夹中的文件,文件夹最后修改日期ID不会改变,使用这些功能。

有没有办法检查文件夹中的文件是否已被编辑,而不是逐个浏览所有文件?

这个脚本会经常运行,所以我不想这样每次都会遍历所有文件和文件夹,(在某些文件夹中有很多文件)

2 个答案:

答案 0 :(得分:4)

filemtime()返回写入文件数据块的时间,即文件内容更改的时间。 now文件夹也是一个special file,其中包含有关文件夹中包含的文件的信息,以及当我在文件夹(文件)的{{{}时显示的文件夹上使用filemtime()时所了解的内容。 1}}被改变了。因此,当您向文件夹添加文件时,文件夹中的文件条目(特殊文件)及其byte-size更改,但是当您编辑已存在的文件时,文件夹的(特殊文件)字节大小不会更改所以filemtime()显示没有变化。

答案 1 :(得分:2)

这可行:

function foldermtime($dir) {
    $foldermtime = 0;

    $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::CURRENT_AS_FILEINFO;
    $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, $flags));

    while ($it->valid()) {
        if (($filemtime = $it->current()->getMTime()) > $foldermtime) {
            $foldermtime = $filemtime;
        }
        $it->next();
    }

    return $foldermtime ?: false;
}

var_dump(foldermtime(__DIR__));