kostenloser Webspace werbefrei: lima-city


Dateien mit unter time() löschen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    macromedia

    Kostenloser Webspace von macromedia

    macromedia hat kostenlosen Webspace.

    Hallo,

    ich hab ne wichtige tag/frage">Frage

    undzwar möchte ich in einem Ordner alle Dateien die älter sind als time() automatisch löschen.


    z.B.:
    date(Hi, time()); => z.b: 1500

    nun möchte ich alle dateien in einem ordner die kleiner als 1500 sind löschen lassen.

    so dass 1501 und 1502 usw. noch existieren, aba alle anderen (1459 - 1458 - usw. ) gelöscht werden.


    Wie würde das mit einer Schleife gehen?

    Beitrag zuletzt geändert: 14.6.2009 16:02:50 von macromedia
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Zuallererst solltest du dich fragen, ob es nicht einen besseren Weg der gewünschten Aufgabe gibt, als irgendwelche Dateien anzulegen und diese dann zu löschen.

    Im Grunde müsstest du alle Dateien des Ordners einzeln auslesen mit einer Schleife und dann einzeln löschen, falls das Create-Datum kleiner ist als X.
    Ich weiß leider nicht,w ie man den Zeitpunkt des Filecreate bekommt.
    Für den Zeitpunkt des lastmodified kann man die Funktion filemtime() benutzen.

    <?php
    //delete files older than X
    $timestamp = "1244994028";
    
    //open directory
    $dir = opendir("/foo/bar");
    
    //read files from dir
    while($file = readdir($dir)){
       if(filemtime($file) < $timestamp){
          unlink($file);
       }
    }
    ?>


    Das Script benutzt jetzt eben das LastModified-Datum, NICHT das der Dateierstellung!
    Das müsstest du noch herausfinden.

    Ist nicht getestet. Eventuell musst du beim Löschen der Datei den Pfad noch mit angeben. Das habe ich jetzt alles nicht ausprobiert.



    Bitte beachte auch, dass
    undzwar möchte ich in einem Ordner alle Dateien die älter sind als time() automatisch löschen.

    bedeutet, dass du alle Dateien löschen willst, die vor dem aktuellen Zeitpunkt erstellt worden sind, das heißt, alle Dateien, die überhaupt existieren.
    Wenn das der Fall sein soll, musst du die Abfrage nach dem Datum nicht machen.

    Was du genau brauchst, ist nicht so ganz eindeutig.

    Wenn du alle Dateien löschen möchtest, die älter sind als z.B. 14 Tage, dann musst du eben den aktuellen Timestamp minus 14 * 86400 rechnen.



    gruß
    ferdinand24

    Beitrag zuletzt geändert: 14.6.2009 16:47:10 von ferdinand24
  4. Autor dieses Themas

    macromedia

    Kostenloser Webspace von macromedia

    macromedia hat kostenlosen Webspace.

    habe den Script von ferdinand24 etwas umprogrammiert,
    nun funktioniert es.

    //delete files older than X
    $time2stamp = date(Hi, time());
    
    
    
    
    
    
    //open directory
    $di4r = opendir("spotlight/");
    
    //read files from dir
    while($fil44e = readdir($di4r)){
       if($fil44e != "." && $fil44e != ".."){
    				if( $fil44e < $time2stamp ) {
    				unlink("spotlight/".$fil44e);
    				}
       }
    }
    
    closedir($di4r);
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!