php获取文件夹的最后修改时间解决方案

php获取文件夹的最后修改时间解决方案

php获取文件夹的最后修改时间解决方案

php提供了两种方式获取文件最后修改时间,分别如下

<?php
$stat = stat("Data/");
echo $stat["mtime"];
clearstatcache();
?>

<?php
echo (filemtime("Data/"));
clearstatcache();
?>

但是这两种方式获取的时间在文件修改后老是不变化,怎么办呢

有两种方法可以实现,

循环法

就是循环出这个文件夹的所有文件,然后将最后修改时间进行排序,获取最新的文件修改时间,就实现了

<?php
clearstatcache();
$directory = glob('Data/*');
$_lastmodtime = 0;
//循环目录
foreach ($directory as $file) {
    $_modtime = filemtime($file);//获取这个文件的最后修改时间
    if ($_lastmodtime < $_modtime) {
        $_lastmodtime = $_modtime;//比较一下,将最新的时间记录下来
    }
}
$mdtime = date('d.m.Y H:i:s', $_lastmodtime);
echo "文件夹最后修改时间: $mdtime<br />";
?>

上面实现了单层目录,如果多层目录呢,加一个递归函数

<?php
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;
}

clearstatcache();
$directory = rglob('Data/*');
$_lastmodtime = 0;
//循环目录
foreach ($directory as $file) {
    $_modtime = filemtime($file);//获取这个文件的最后修改时间
    if ($_lastmodtime < $_modtime) {
        $_lastmodtime = $_modtime;//比较一下,将最新的时间记录下来
    }
}
$mdtime = date('d.m.Y H:i:s', $_lastmodtime);
echo "文件夹最后修改时间1: $mdtime<br />";
?>

记录法

就是每次修改目录文件的时候,将目录的修改时间记录在目录的一个文件中,下次读取目录最后修改时间,直接读取这个文件就知道了

<?php
file_put_contents("Data/lastmodifytime.txt",time());
$mdtime = date('d.m.Y H:i:s', file_get_contents("Data/lastmodifytime.txt"));
echo  "文件夹最后修改时间3: $mdtime<br />";
?>



{{collectdata}}

网友评论0