Browse Source

Added default proposal for a cronable cleanup script (cleaning the archive/ directory)

Yannick Warnier 14 years ago
parent
commit
efbc6e4ae6
1 changed files with 32 additions and 0 deletions
  1. 32 0
      main/cron/cleanup.php

+ 32 - 0
main/cron/cleanup.php

@@ -0,0 +1,32 @@
+<?php
+if (php_sapi_name() != 'cli') { exit; } //do not run from browser
+$dir = dirname(__FILE__);
+$a_dir = realpath($dir.'/../../archive/');
+$list = scandir($a_dir);
+$t = time()-(86400*7);
+foreach($list as $item) {
+	if (substr($item,0,1) == '.') { continue; }
+	$stat = @stat($a_dir.'/'.$item);
+	if ($stat === false) { error_log('Cron task cannot stat '.$a_dir.'/'.$item); continue; }
+	if ($stat['mtime'] > $t) { //if the file is older than one week, delete
+		recursiveDelete($a_dir.'/'.$item);
+	}
+}
+
+/**
+ * Delete a file or recursively delete a directory
+ *
+ * @param string $str Path to file or directory
+ */
+function recursiveDelete($str){
+	if(is_file($str)){
+		return @unlink($str);
+	}
+	elseif(is_dir($str)){
+		$scan = glob(rtrim($str,'/').'/*');
+		foreach($scan as $index=>$path){
+			recursiveDelete($path);
+		}
+		return @rmdir($str);
+	}
+}