Laravel: cancellare i vecchi files in una directory

Quando si importano dati dall'esterno o si devono gestire dei logs ci si ritrova spesso con una mole di files importante e spesso inutile, occupando spazio nel disco.

Con poche righe di codice si possono cancellare i files più vecchi di X giorni (oppure ore, minuti, ...).
Ecco il codice base:

$files = Storage::disk("public")->allFiles("directory-import-files");
foreach ($files as $file) {
    $time = Storage::disk('public')->lastModified($file);
    $fileModifiedDateTime = Carbon::parse($time);
    if (Carbon::now()->gt($fileModifiedDateTime->addDays(5))) {
        Storage::disk("public")->delete($file);
    }
}

Nell'esempio vengono cancellati i files più vecchi di 5 giorni.

Utilizzando Carbon è possibile specificare anche altri intervalli, ad esempio se volessimo cancellare i files più vecchi di un'ora sarebbe sufficiente modificare in questo modo:

$fileModifiedDateTime->addHour(1)

 

 


Commenti