Я хочу удалить все каталоги старше 5 минут?

Итак, здесь начинается сложная часть. В каждом каталоге есть два подкаталога (подкаталоги также содержат файл) с именами 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. Они также должны быть удалены.

Эти три каталога не должны быть удалены проектом, изображениями и активами. За исключением этих, все каталоги должны быть удалены. Сейчас

Пожалуйста, кто-нибудь Помоги мне.

1 ответ

Решение

Вы можете сделать это. Сначала создайте функцию для удаления каталога

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);
    }
}
Другие вопросы по тегам