我正在编写创建所有文件和文件夹列表的脚本,下一次运行时,我想检查文件夹是否自上次以来被修改过,如果没有,这次将文件夹从读取中排除,
我使用filemtime()和stat()函数,
它可以工作,当我在子文件夹中添加新文件时,日期会更改,但如果我在文件夹中编辑文件,则使用这些功能,文件夹上次修改的日期id不会更改。
有没有一种方法可以检查文件夹中的文件是否已编辑,而不必逐一检查所有文件??
这个脚本会经常运行,所以我不想,所以它每次都会遍历所有文件和文件夹,(在一些文件夹中有很多文件)
filemtime()
返回写入文件的数据块的时间,即文件内容更改的时间。现在文件夹也是一个special file
,它包含关于文件夹中包含的文件的信息,我所理解的是,当你在文件夹上使用filemtime()
时,它显示了文件夹(文件)的byte-size
更改时的情况。因此,当你向文件夹中添加一个文件时,会在文件夹中创建一个关于该文件的条目(特殊文件),其byte-size
会发生变化,但当你编辑一个已经存在的文件时,文件夹的字节大小不会发生变化,因此filemtime()不会显示变化。
这可以工作:
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__));