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 />"; ?>
网友评论0