所以这里有一个棘手的部分。在名为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除了这些目录应该被删除。现在
请有人帮助我。
答案 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);
}
}