PHP: Was ist die beste und einfachste Weg, um zu überprüfen, ob Verzeichnis leer ist oder nicht
Habe ich ein root-Verzeichnis mit 100s von dynamisch generierten Ordner. Wie die Zeit vergeht, einige dieser Ordner müssen ausgelöscht werden aus dem system unter der Voraussetzung, dass diese(ese) Verzeichnisse(N) muss leer sein. Was wäre die beste kürzesten, einfachsten und/oder effektivsten Weg, das zu erreichen?
rmdir
fehl für nicht-leeres Verzeichnis, so dass nur $deleted = @rmdir('/path/to/folder');
Danke... werde die
glob
Weg wie vorgeschlagen von beiden @Matteo und JeffmanInformationsquelleAutor ErickBest | 2013-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
glob
:Eine nette Sache über
glob
ist, dass es nicht zurück.
und..
Verzeichnisse.GLOB_NOSORT
Flagge um die Leistung zu erhöhenaber wenn ./.. nicht gemeldet wurden, werden dann solche dir würde nicht gelöscht werden, da es nicht leer ist ... so scheint es zu sein, nicht gut für die leer dir entfernen
Dieser falsche Weg, glob() ignoriert versteckte Dateien standardmäßig, php.net/manual/ru/function.glob.php#68869 Also, wenn Sie fügen Sie die Maske, um versteckte Dateien in glob() du hast die gleiche Lösung, wie @Matteo schrieb unten.
Angesichts convenience-Kodierung, diese ist effizient. In Anbetracht der Leistung dies kann schlecht sein, wenn glob ersten müssen liefern +1000 Dateien pro Verzeichnis an, schauen Sie nach, welche Zahl bestimmt, wie viele Dateien es sind.
InformationsquelleAutor
Können Sie zählen die Elemente, die im Ordner enthalten. Die ersten zwei Punkte sind
.
und..
, so überprüfen Sie einfach die Elemente zählen.glob
vorgeschlagen von @jeffman ?Ich gemessen den zwei Lösungen, und tatsächlich Jeffman man ist schneller (auf einen Ordner). Jeffman:
5.388E-5 seconds
Meine Lösung:2.909E-5 seconds
+1...für die Ausarbeitung weiterer. Dank
InformationsquelleAutor mcont