AutoDelete

Aus Programmers Guide

Wechseln zu: Navigation, Suche

Automatisches löschen alter Dateien (z.B. Logfiles) in PHP

Ich lösche meine temporären Dateien, um meinen Webspace sauber zu halten, ganz einfach über ein kleines Script.

<?php
/*********************************************************************
Filename: index.php
 
 
*********************************************************************/
 
/**************************>= PHP 5.3********************************
für neue PHP-Versionen exisitiert der etwas einfachere FilesystemIterator
$iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::CURRENT_AS_PATHNAME);
foreach ($iterator as $fileinfo) {
    echo filemtime($iterator->current()) . "\n<br>";
}
*********************************************************************/
 
//für meine 'alte' PHP 5.2.6 Version
$timeStr="-1 week"; //für strtotime
$deleteItems=true; //löschen der alten dateien
$echoItems=false; //anzeigen der Dateien und Arbeitsschritte
$dirName=dirname(__FILE__); //Pfadangaben
 
//Den Iterator mit dem Pfadnamen der aktuellen Datei füttern und erzeugen
$iterator = new DirectoryIterator($dirName);
 
//solange noch was zu iterieren ist
while($iterator->valid()) {
	//den aktuellen FilePointer holen
	$file = $iterator->current();
	//ist die Datei älter als oben angegeben und nicht die aktuell aufgerufene
	if($file->getCTime() <= strtotime($timeStr) && $file->getFilename() != basename(__FILE__)){
		//soll was ausgegeben werden?
		if($echoItems){
			echo $file->getMTime() . " -> " . $file->getFilename()."<br>";
		}
		//soll gelöscht werden?
		if($deleteItems){
			unlink($dirName."/".$file->getFilename());
			//natürlich zeigen wir den Löschvorgang an.
			if($echoItems){
				echo $file->getFilename()."..deleted<br>";
			}
		}
	}
	//gehe zum nächsten Element
	$iterator->next();
}
?>
Persönliche Werkzeuge