我想删除所有超过 5 分钟的目录?

I would like To Delete All Directories That are Older Than 5 Minutes?

棘手的部分来了。每个Directory中具体有两个子目录(子目录也有的包含文件),名为lib和vendor。所以当我曾经有特定的 Dir 名称时,我曾经使用这个

<?php 
$dir = $_GET['fname'];
array_map('unlink', glob("$dir/lib/*.*"));
rmdir("$dir/lib");
array_map('unlink', glob("$dir/vendor/*.*"));
rmdir("$dir/vendor");
array_map('unlink', glob("$dir/*.*"));
rmdir($dir);`

所以我曾经有一个特定的目录名称。但现在我想改变这一点。 所以每当用户被重定向到我的脚本

它应该删除所有早于 5 分钟的目录。仅有的 目录。

所有目录仅包含且仅包含 2 个名为 lib 和 vendor.They 也应该删除。

这三个目录不应该删除 project , images 和 assets.Except 这些所有目录都应该删除。现在

请有人帮助我。

你可以做到。先创建一个删除目录的函数

function deldirectory($dir){

$tfile = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($tfile,
             RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
    if ($file->isDir()){
        rmdir($file->getRealPath());
    } else {
        unlink($file->getRealPath());
    }
}
return rmdir($dir);
}

在 foreach 循环中调用该函数来检查和删除超过 5 分钟的文件夹

foreach ($folders as $f){
    $lastmodified = filemtime($f);
    $farray = array("project","images","assets");//These folders are ignored
    $file_life = 300;
    if((time() - $lastmodified >= $file_life) && !in_array($f, $farray)){
       deldirectory($f);
    }
}