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

时间:2016-05-22 04:03:37

标签: php timer directory delete-directory

所以这里有一个棘手的部分。在名为lib和vendor的每个Directory中都有两个Sub目录(子目录也有一些包含文件)。因此,当我以前使用特定的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也应该删除。

这三个目录不应该删除项目,图像和     assets.Except除了这些目录应该被删除。现在

请有人帮助我。

1 个答案:

答案 0 :(得分:2)

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

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);
    }
}