Bonjour,
j'ai un script php qui permet de parcourir de manière récursive l'ensemble des sous répertoires d'un répertoire donné. Le but étant d'obtenir l'équivalent de l'explorateur de windows, avec dans un menu à gauche, la liste des dossiers imbriqués et à droites, la liste des fichiers du répertoire sélectionner.
Voici le script en question :
Donc le code est simple, tant qu'il y a des fichiers dans le dossier, je boucle et je regarde si j'ai bien un dossier et si il s'agit bien d'un dossier ou l'on peut avoir accès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function scanRepertoire($dirPath,$treeIcon,&$nodeId,$parentNodeId) { $rep = opendir($dirPath); $childNode = array(); while(false !== ($files = readdir($rep))) { if(is_dir($dirPath."/".$files) && ($dirPath."/".$files != ".." && $dirPath."/".$files != ".")) { if(!in_array($files,$G_SYSTEM_DIRECTORY)) { $nodeId++; $tmpNodeId = $nodeId; $childNode[] = new NoeudTreeview($files, $treeIcon["folder"], #Image noeud ouvert $treeIcon["folderopen"], #Image noeud Fermé scanRepertoire($G_PATH."/".$files,$nodeId scanRepertoire( $dirPath."/".$files, $treeIcon,$nodeId,$nodeId), $G_URL_SSL."/LOGGED-IN/ContentManagement/fileManager.php?DIR=".$dirPath."/".$files."&FIELD_NAME=".$_GET["FIELD_NAME"]."&MODE=".$_GET["MODE"], $tmpNodeId, $parentNodeId,$nbrOfBoucle); } } } return $childNode; }
Ce code fonctionne parfaitement mis à part que je le trouve très lent. 14 Secondes minimum pour parcourir un dossier qui contient environs 8000 fichiers et 600 dossiers.
Que me conseillez-vous afin d'optimiser ce code ?
Merci d'avance.
Partager