我正在编写脚本来创建所有文件和文件夹的列表, 当下次运行时,我想检查自上次以来文件夹是否被修改,如果没有,则排除此时读取文件夹,
我使用filemtime()和stat()函数,
它有效,当我在子文件夹中添加新文件时,日期正在改变,但如果我编辑文件夹中的文件,文件夹最后修改日期ID不会改变,使用这些功能。
有没有办法检查文件夹中的文件是否已被编辑,而不是逐个浏览所有文件?
这个脚本会经常运行,所以我不想这样每次都会遍历所有文件和文件夹,(在某些文件夹中有很多文件)
答案 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__));