php script to delete files older than 24 hrs, deletes all files

ChuckO picture ChuckO · Jun 27, 2010 · Viewed 48.9k times · Source

I wrote this php script to delete old files older than 24 hrs, but it deleted all the files including newer ones:

<?php
  $path = 'ftmp/';
  if ($handle = opendir($path)) {
     while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.$file)) < 86400) {  
           if (preg_match('/\.pdf$/i', $file)) {
              unlink($path.$file);
           }
        }
     }
   }
?>

Answer

Mike picture Mike · Nov 25, 2012
<?php

/** define the directory **/
$dir = "images/temp/";

/*** cycle through all files in the directory ***/
foreach (glob($dir."*") as $file) {

/*** if file is 24 hours (86400 seconds) old then delete it ***/
if(time() - filectime($file) > 86400){
    unlink($file);
    }
}

?>

You can also specify file type by adding an extension after the * (wildcard) eg

For jpg images use: glob($dir."*.jpg")

For txt files use: glob($dir."*.txt")

For htm files use: glob($dir."*.htm")