【发布时间】:2018-06-22 15:00:45
【问题描述】:
我正在尝试创建一个基于日期删除最旧文件的函数,最多可删除 30 个文件。我抓取目录中的所有文件。如果超过 30 个,则按日期排序。然后最旧的被删除。
public function cleanUpFolder($path){
$files = [];
try {
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
$files[] = $fileinfo;
// in here i can call any valid method like getPathname()
}
}
$fileCount = count($files);
if($fileCount > self::MAX_BACKUPS){
// sort with the youngest file first
usort($files, function($a, $b) {
// in here, i can call functions like getMTime()
// and even getPath()
// but getPathname or getFileName return false or ""
return $a->getMTime() < $b->getMTime();
});
for($i = $fileCount - 1; $i > 30; $i--){
unlink($files[$i]->getPathname());
}
}
return true;
}
catch (Exception $e){
return false;
}
}
什么是有效的
- 获取文件
什么不工作
排序?我无法判断排序是否有效
在遍历
$files数组时调用 DirectoryIterator 上的一些方法
似乎将$fileInfo 放入数组中,大多数函数调用不再起作用..
【问题讨论】:
标签: php