Punktuelles im Web Über mich

Hallo und ich bitte Sie um einen kleinen Moment Ihrer Aufmerksamkeit. Diese Webseiten sind umgezogen, genauer gesagt ist dies ein alter Stand, der etwa 9 Jahre alt ist aus einer alten Sicherung wieder auferstanden ist. Inklusive eines HTML-Parsers in PHP und der alten, originalen Inhalte - die natürlich (Stand November 2018) nach und nach aktualisiert werden. Sehen Sie es als Nostalgie oder einfach Spaß an der Sache.
Vielen Dank!

Alte Dateien löschen

Um mit einer Datei arbeiten zu können ist es wichtig den korrekten Zugriff nicht allein über den Dateinamen, sondern über den Pfad zu realisieren.
Durchlaufen wir klassisch einen Ordner über einen Dateihandle, haben wir den Namen jeder Datei, es fehlt uns aber der Pfad. Nur wenn wir uns physikalisch im gleichen Ordner befinden haben wir keine Probleme damit.
Je nach Plattform sollte auch auf den korrekten Beginn des Pfades (Laufwerksangabe "c:", "./" oder "/") und beim "Zusammenbasteln" des Pfades auf korrekte "/" Trenner geachtet werden.
Glücklicherweise arbeitet Windows inzwischen auch korrekt mit dem "/".

Wir wollen alte Dateien löschen. Nicht im Web, sondern auf einem lokalen Rechner unter Windows - eine klassische Administrationsaufgabe.

Wir definieren ein Löschalter in Stunden und der Bequemlichkeit halber auch in Tagen, geben den zu durchsuchenden Ordner und ein Merkmal im Dateinamen an.

$Stunden    = 12;
$Tage       = 3;
$MeinOrdner = "d:/Ordner/" ;
$Merkmal    = ".txt";

Aus unseren Zeitangaben berechnen wir das gesuchte Alter in Sekunden.

$LoeschAlter = (3600 * $Stunden) + (3600*24 * $Tage);

Das Alter der jeweiligen Datei berechnen wir auf der Basis seiner letzten Änderung (filemtime).

        $PfadName=$MeinOrdner.$Datei;
        $ZuletztGeaendert = filemtime($PfadName);
        $Alter=time()-$ZuletztGeaendert;

Jetzt vergleichen wir das berechnete Alter mit dem Löschalter und können entscheiden was mit der jeweiligen Datei passieren soll.

<?php

// Variablendeklaration
$Stunden 	= 12;
$Tage 		= 3;
$MeinOrdner = "d:/Ordner/" ;
$Merkmal    = ".txt";

//Alter in Sekunden
$LoeschAlter = (3600 * $Stunden) + (3600*24 * $Tage);

$VerzeichnisHandle = opendir($MeinOrdner);
while( $Datei = readdir($VerzeichnisHandle) )
{
    if( stristr($Datei, $Merkmal) )
    {
        $PfadName=$MeinOrdner.$Datei;
        $ZuletztGeaendert = filemtime($PfadName);
        $Alter=time()-$ZuletztGeaendert;
        if ($Alter>=$LoeschAlter)
        {
            echo "Alt $PfadName<br>\n";
            //unlink($PfadName);
        }
        else
        {
            echo "Neu $PfadName<br>\n";
        };
    };
};
closedir($VerzeichnisHandle);
?>

Der Aufruf unseres Programms kann nun über die Kommandozeile erfolgen:
"Pfad:/php.exe d:/phpskripte/MeinSkript.php". Zur Sicherheit für die etwas unbedachten Freunde von "copy & paste" ist die Löschanweisung auskommentiert.

http://www.punktuelles-im-web.net AlteDateienLoeschen.html, zuletzt geändert: 23.6.2010 05:06:00.