Why i need this script ?
In the current project we need a system that seek and delete older files from FTP directory , older than 7 days .This script should run every week , will set a cron job for that which is not a issue here.
Well too much talking here is the code.
You are free to use/modify this code any way you want.But i am not responsible for any damage done by this code.
So use it only if u know how to use it :P
Any fixes/bugs/help please post in comments below .
<?php
set_time_limit(0);
//This class delets files n folder older than time specified
//Author : Arshdeep Goswami <arshdeep79@gmail.com>
class DelOldfiles{
var $older_than = NULL;
var $total = 0;
function __construct(){
$this->older_than = mktime(date("H"),date("i"),date("s"),date("m"),date("d")-7,date("Y"));
}
//Get all the files of the dir
private function getAllfiles($dir){
if(!is_dir($dir)) return false;
$scaned = scandir($dir);
array_shift($scaned);
array_shift($scaned);
$nsc = array();
foreach($scaned as $sc)
$nsc[] = "{$dir}/{$sc}";
return $nsc;
}
//Get size of the dir
private function dirSize($directory) {
$size = 0;
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
$size+=$file->getSize();
}
return $size;
}
//Delete files recursively
function delRecursive($dir){
if(!is_dir($dir)) return false;
$files = $this->getAllfiles($dir);
if(empty($files)){
return rmdir($dir);
}
foreach($files as $key => $file){
if(is_dir($file)){
$this->delRecursive($file);
}else if(file_exists($file)){
unlink($file);
}
}
//Once again calling after clearing file inside.
return $this->delRecursive($dir);
}
//Delete empty dirs
function delEmptyDirs($dir){
if(!is_dir($dir)) return false;
$files = $this->getAllfiles($dir);
$d_f = array();
foreach($files as $key => $file){
if(is_dir($file)){
if($this->dirSize($file) > 0)
$this->delEmptyDirs($file);
else{
$this->delRecursive($file);
}
}
}
}
//Call to delete every old file
public function del($dir){
if(!is_dir($dir)) return false;
$files = $this->getAllfiles($dir);
$d_f = array();
foreach($files as $key => $file){
if(is_dir($file)){
$this->del($file);
}
else if(file_exists($file)){
$time = filemtime($file);
if($this->older_than > $time){
unlink($file);
$total++;
}
}
}
}
}
$obj = new DelOldfiles();
$f = $obj->del('D:\WINDOWS');
$f = $obj->delEmptyDirs('D:\WINDOWS');
No comments:
Post a Comment