0

因此,棘手的部分来了。每个名为 lib 和 vendor 的目录中都有两个子目录(子目录也有一些包含文件)。所以当我以前有特定的目录名称时,我曾经使用它

<?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 分钟的目录。只有目录。

所有目录仅包含两个名为 lib 和 vendor 的子目录。它们也应该被删除。

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

请有人帮帮我。

4

1 回答 1

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);
    }
}
于 2016-05-22T04:39:11.663 回答