Files am FTP automatisch löschen

Schalt mal Fehlerausgabe ein:

PHP:
<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $dir = '/FI9805W_xxxE61FFCC/';
    $handle = opendir($dir);
    $cnt = 0;
    while(false !== ($file = readdir( $handle ))) {
        $mtime = filemtime($dir . $file); // ggf. filectime() statt filemtime() verwenden
        $timeout = time()-60*60*24*2;
        if($timeout < $mtime) {
            //unlink( $dir . $file );
            printf("%s: mtime = %s, timeout = %s => gelöscht\n", $file, strftime("Y-m-d,H:M:S",$mtime), strftime("Y-m-d,H:M:S",$timeout));
            $cnt++;
        }
    }
    closedir($handle);
    echo 'Anzahl: ' . $cnt;
?>
 
jetzt kommt .: mtime = Y-m-d,H:M:S, timeout = Y-m-d,H:M:S => gel�scht Anzahl: 1
im verzeichnis wurde aber nichts gelöscht...
 
Ich habe unlink() auskommentiert, damit nicht wirklich gelöscht wird, sondern nur simuliert. Versuch es noch mal damit:

PHP:
<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $dir = '/FI9805W_xxxE61FFCC/';
    $handle = opendir($dir);
    $cnt = 0;
  
    $timeout = time()-60*60*24*2;
  
    while(false !== ($file = readdir( $handle ))) {
        $absfile = $dir . $file;
        if(is_dir($absfile)) continue;
      
        $mtime = filemtime(); // ggf. filectime() statt filemtime() verwenden
      
        if($timeout < $mtime) {
            //unlink( $absfile );
            printf("%s: mtime = %s, timeout = %s => geloescht\n", $absfile, strftime("%Y-%m-%d,%H:%M:%S",$mtime), strftime("%Y-%m-%d,%H:%M:%S",$timeout));
            $cnt++;
        }
    }
    closedir($handle);
    echo 'Anzahl: ' . $cnt;
?>

Wenn es passt, kannst du in der Zeile

Code:
//unlink( $absfile );

die zwei Slashes am Anfang weglöschen:

Code:
unlink( $absfile );
 
hm, neuer fehler
Warning: filectime() expects exactly 1 parameter, 0 given in /home/.sites/xxx/sxxx/web/foscam/loeschen.php on line 14

hab das sowohl mit $mtime=filemtime(); und filectime grad probiert. gleicher fehler.
 
Ich Idiot... Ich sollte so spät abends wirklich keine Code-Zeilen mehr verbrechen :-/

PHP:
<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $dir = '/FI9805W_xxxE61FFCC/';
    $handle = opendir($dir);
    $cnt = 0;

    $timeout = time()-60*60*24*2;

    while(false !== ($file = readdir( $handle ))) {
        $absfile = $dir . $file;
        if(is_dir($absfile)) continue;
     
        $mtime = filemtime($absfile); // ggf. filectime() statt filemtime() verwenden
     
        printf("%s: mtime = %s, timeout = %s\n", $absfile, strftime("%Y-%m-%d,%H:%M:%S",$mtime), strftime("%Y-%m-%d,%H:%M:%S",$timeout));
        if($timeout < $mtime) {
            //unlink( $absfile );
            printf("%s geloescht\n", $absfile);
            $cnt++;
        }
    }
    closedir($handle);
    echo 'Anzahl: ' . $cnt;
?>
 
so jetzt hat er von den 16 files 3 gelöscht und 13 gelassen, aber es hätte genau anders rum sein sollen, es wurden die letzten 2 tage gelöscht und die älter sind, bleiben noch drauf
 
super jetzt klappt es, vielen dank :)
noch eine letzte frage. wenn ich das ganze aus 4 verschiedenen verzeichnissen will, brauch ich ja nur die zeilen zwischen <?php und ?> kopieren -einfügen und eben den pfad anpassen?
 
Dann würde ich es doch eher in eine Funktion packen:

PHP:
<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
   
    function delete_files($dir)
    {
        $handle = opendir($dir);
        $cnt = 0;
     
        $timeout = time()-60*60*24*2;
     
        while(false !== ($file = readdir( $handle ))) {
            $absfile = $dir . $file;
            if(is_dir($absfile)) continue;
         
            $mtime = filemtime($absfile); // ggf. filectime() statt filemtime() verwenden
         
            printf("%s: mtime = %s, timeout = %s\n", $absfile, strftime("%Y-%m-%d,%H:%M:%S",$mtime), strftime("%Y-%m-%d,%H:%M:%S",$timeout));
            if($timeout > $mtime) {
                unlink( $absfile );
                printf("%s geloescht\n", $absfile);
                $cnt++;
            }
        }
        closedir($handle);
        echo 'Anzahl: ' . $cnt;
    }
   
    delete_files('/FI9805W_xxxE61FFCC/');
    delete_files('/verzeichnis_2/');
    delete_files('/verzeichnis_3/');
?>
 

Neue Beiträge

Zurück