Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Dateien und Ordner in PHP ohne Leistungsprobleme rekursiv finden?

Wie kann ich Dateien und Ordner in PHP ohne Leistungsprobleme rekursiv finden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-25 21:17:27200Durchsuche

How Can I Recursively Find Files and Folders in PHP Without Performance Issues?

Rekursives Suchen von Dateien und Ordnern mit PHP

Um den Inhalt eines Verzeichnisses und aller Unterverzeichnisse zu durchsuchen, wird eine rekursive Funktion verwendet. Der bereitgestellte Code weist jedoch ein Leistungsproblem auf, wodurch der Browser erheblich langsamer wird.

Das Problem

Die Funktion schließt „.“ nicht aus. und „..“ Verzeichnisse aus den rekursiven Aufrufen, was zu einer Endlosschleife und langsamer Ausführung führt.

Die Lösung

Um dieses Problem zu beheben, haben wir den Code wie folgt geändert folgt:

function getDirContents($dir, &$results = array()) {
    $files = scandir($dir);

    foreach ($files as $key => $value) {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
        if (!is_dir($path)) {
            $results[] = $path;
        } else if ($value != "." && $value != "..") {
            getDirContents($path, $results);
            $results[] = $path;
        }
    }

    return $results;
}

Ausschluss von „.“ und „..“

Wir haben Bedingungen hinzugefügt, um „.“ auszuschließen. und „..“ Verzeichnisse aus den rekursiven Aufrufen. Diese Verzeichnisse stellen jeweils das aktuelle und das übergeordnete Verzeichnis dar, und ihre Einbeziehung würde eine Endlosschleife erzeugen.

Verwendung

Um die Funktion zu verwenden, geben Sie einfach den Pfad zum an Verzeichnis, das Sie durchqueren möchten:

var_dump(getDirContents('/xampp/htdocs/WORK'));

Dieser Code gibt ein Array zurück, das die vollständige Liste der Dateien und Ordner im angegebenen Verzeichnis enthält. Jeder Eintrag ist der vollständige Pfad zur Datei oder zum Ordner.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateien und Ordner in PHP ohne Leistungsprobleme rekursiv finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn