问题描述
|
我正在编写脚本来创建所有文件和文件夹的列表,
下次运行时,我想检查自上次以来是否对文件夹进行了修改,如果没有,则这次不读取文件夹,
我使用filemtime()和stat()函数,
它起作用,当我在子文件夹中添加新文件时,日期会更改,但是如果我在文件夹中编辑文件,则使用这些功能不会更改文件夹的上次修改日期ID。
有没有一种方法可以检查文件夹中的文件是否已被编辑,而又不一个接一个地检查所有文件?
这个脚本会经常运行,所以我不想每次都遍历所有文件和文件夹,(在某些文件夹中有很多文件)
解决方法
这可以工作:
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__));
, “ 1”返回写入文件的数据块的时间,即文件内容更改的时间。现在,文件夹也是一个special file
,其中包含有关该文件夹中包含的文件的信息,我了解的是,当您在文件夹上使用ѭ1it时,它显示了当文件夹(文件)的byte-size
被更改时的情况。因此,当您向文件夹中添加文件时,会在文件夹(特殊文件)中创建有关该文件的条目,并且其“ѭ4”会更改,但是当您编辑现有文件时,文件夹(特殊文件)的字节大小不会更改因此filemtime()保持不变。