2016-07-20 6 views
-2

Ich habe einen Ordner mit 706 Dateien drin. Die speichert nur beschnittene Thumbnails. Von Zeit zu Zeit muss ich es sauber wischen. Also habe ich eine Funktion erstellt, die den RecursiveDirectoryIterator verwendet, um diese Dateien zu löschen. Hier ist meine Funktion:RecursiveIteratorIterator verhält sich merkwürdig, wenn Sie mit Unlink-Funktion verwenden

function wipeDir($path) 
{ 
    $i = 0; 
    $src = realpath(get_home_path().$path); 
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($src, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST); 
    foreach ($files as $filename => $fileInfo) { 
     $i++; 
     unlink($filename); 
    } 

    return $i; 
} 

Das Problem ist, dass, wenn ich unlink-Funktion verwende es verarbeitet nur 527 Dateien und $ i = 527, wenn ich diese Funktion zu starten zweimal es wischt alle Dateien in diesem Verzeichnis, aber wenn ich einen Kommentar die Unlink-Funktion $ i = 706, die eine korrekte Anzahl von Elementen in diesem Ordner ist. Irgendwie unlink Funktion bricht vom Iterator, wenn es Dateien 527 erreicht. Weiß jemand, warum ist das?

+0

Mögliche Duplikate von [Strange PHP-Verhalten Rekursives Löschen von Ordnern entfernt nur 527-Datei statt alle] (http://stackoverflow.com/questions/38478760/strange-php-behavior-recursive-folder-deletion-removes-only- 527-Datei-eher-als) –

Antwort

0

Das Problem ist mit meiner vagrant homestead box ... Es funktioniert gut auf meinem Produktionsdienst und löscht alle Dateien, aber das gleiche gilt nicht für lokale Entwicklungsumgebung.