Maison >développement back-end >tutoriel php >Comment puis-je rechercher de manière récursive des fichiers et des dossiers en PHP sans problèmes de performances ?

Comment puis-je rechercher de manière récursive des fichiers et des dossiers en PHP sans problèmes de performances ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-25 21:17:27253parcourir

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

Recherche récursive de fichiers et de dossiers avec PHP

Pour parcourir le contenu d'un répertoire et tous les sous-répertoires, une fonction récursive est utilisée. Cependant, le code fourni présente un problème de performances, entraînant un ralentissement significatif du navigateur.

Le problème

La fonction n'exclut pas "." et ".." des appels récursifs, conduisant à une boucle infinie et à une exécution lente.

Le correctif

Pour résoudre ce problème, nous avons modifié le code comme suit :

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;
}

Exclusion de "." et ".."

Nous avons ajouté des conditions pour exclure "." et ".." répertoires des appels récursifs. Ces répertoires représentent respectivement les répertoires actuel et parent, et leur inclusion créerait une boucle infinie.

Utilisation

Pour utiliser la fonction, fournissez simplement le chemin d'accès au répertoire que vous souhaitez parcourir :

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

Ce code renverra un tableau contenant la liste complète des fichiers et des dossiers dans le répertoire spécifié. Chaque entrée sera le chemin complet du fichier ou du dossier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn