Funzione PHP per cancellare i vecchi file di una cartella PHP

← ritorno a PHP

/**
 * Una semplice funzione che cancella i file di una cartella piu' vecchi di X secondi
 * 
 * @param stirng $dir la directory (non deve terminare con "/")
 * @param int $max_seconds secondi di vita 
 * @return array lista dei file cancellati
 */
function file_delete_older_than( $dir, $max_seconds ) {
   $list = array();
   $limit = time() - $max_seconds;
   // 
   $dir = realpath( $dir );
   if( !is_dir( $dir ) ) 
      return;
   // apro la cartella
   $dh = opendir( $dir );
   if( $dh === false ) 
      return;
   // ciclo sui file
   while( ( $file = readdir( $dh ) ) !== false ) {
      $file = $dir . '/' . $file;
      if( !is_file( $file ) ) 
         continue;
      // test eta'
      if( filemtime( $file ) < $limit ) {
         $list[] = $file;
         unlink( $file );
      }
   }
   // chiudo la cartella
   closedir( $dh );
   // torno
   return $list;
}

Estratto da: https://gist.github.com/tdebatty/9412259