FTP-Dateien löschen

schutzgeist

Erfahrenes Mitglied
Hallo,

meine google-Recherche hat mich noch nicht wirklich weiter gebracht, daher wend ich mich jetzt direkt an euch ;)

Ich sollte wissen, ob es möglich ist per php-Skript bestimmte Dateien automatisch bei Aufruf (onLoad oder ähnlich) einer Seite aus einem Verzeichnis zu löschen.
In diesem Fall handelt es sich um ein Bilderverzeichnis und ich hätte gerne alle Bilder gelöscht, die älter als 30 Tage sind.
Die Bilder werden von einer Netzwerkkamera aufgenommen und automatisch auf den FTP geladen.

Ich hab bisher die Funktion ftp_delete gefunden.
Weiß aber nicht wirklich, wie ich damit arbeiten soll, da ich in PHP nicht wirklich viel Erfahrung habe.

Danke schonmal,
Gruß schutzgeist
 
Das ist bestimmt noch nicht ganz richtig, aber es soll aufzeigen wie es aussehen könnte, wenn man eine Datei löschen will, die älter als 30 tage ist:
PHP:
$file = "foo.php";
$now = time();
$filetime = filemtime( $file );
$diff = ( $now - $filetime ) / 86400;

if( $diff < 30 )
{
    unlink( $file );
}
File Funktionen sind eh nicht so mein Ding ;)
Da postet sicher noch jemand was besseres.
 
Ist der FTP-Server gleichzeitig auch der Webserver, so das du so drauf zugreifen kannst?
Wenn ja dann ungefähr so...:
PHP:
$dir = new DirectoryIterator("image");
foreach($dir as $file){
 if($file->isFile() && $file->getMTime() < (time() - (60*60*24*31))){
    unlink($file->getPath());
  }
}
ansonsten mußt du dir wohl die ganzen funktionen zum thema php / ftp anschauen.
Übersicht darüber liegt hier vor: http://de2.php.net/manual/de/book.ftp.php
 
Ist der FTP-Server gleichzeitig auch der Webserver, so das du so drauf zugreifen kannst?

Das ganze wird höchstwahrscheinlich, wenn es dazu kommt, bei Strato laufen.

Hab aber momentan nen andern Webserver, den ich testweise dazu benutze ;)

Danke euch schonmal.. ich probier morgen mal etwas rum und melde mich dann bestimmt wieder ;)
 
Juhu, da bin ich wieder ;)

Ich hab den Quellcode jetzt einfach mal stumpf kopiert und dachte mir, ich geh schrittweise vor..

Aber anscheinend muss ich der Fehlermeldung nach noch irgend eine Klasse erstellen? :confused:

PHP:
09 <? 
10 $path = './axisbilder/';
11 $dir = new DirectoryIterator($path);
12 foreach($dir as $file){
13 if($file->isFile() && $file->getMTime() < (time() - (30))){
14    unlink($file->getPath());
15  }
16 } 
17 ?>

Fehler:
Fatal error: Cannot instantiate non-existent class: directoryiterator in /usr/uu/www/xxx/www/del.php on line 11
 
Soll heißen, dass das wegen einer veralteten Version vom Apache () nun nicht läuft?
Gibt es eine Alternative dazu?
 
Vorher besser ein Backup der Bilder machen, ich garantiere für nichts :)
Teste mal diesen Code:
PHP:
    $dirName = './';
    $delete = 30;
    $d = dir( $dirName );
    $lastModified = 0;
    while( $entry = $d->read() )
    {
        if( $entry != "." && $entry != ".." )
        {
            if( !is_dir( $dirName."/".$entry ) )
            {
                $currentModified = filemtime( $dirName."/".$entry );
            }
            if( $currentModified > $lastModified )
            {
                $lastModified = $currentModified;
            }
            if( floor( ( ( $lastModified-$currentModified ) / 86400 ) ) > $delete )
            {
                unlink( $dirName.$entry );
            }
        }
    }
    $d->close();
 
Zuletzt bearbeitet:
Zurück