Exploration des dossiers avec php

Fermé
dinfo - 18 avril 2017 à 14:04
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 - 13 mai 2017 à 20:52
Bonjour,

J'ai créé une fonction qui explore tous les dossiers d'un disque donné, la fonction marche bien et il me donne le résultat voulu, mais le problème c'est que quand j'essaie d'exécuter ce script dans un serveur pour explorer tous les dossiers dans un disque donné ça prend beaucoup de temps jusqu'à l'infini :/ et je sais pas combien de temps pour q'il finisse l'exploration pour m'afficher le résultat, tous ça c'est à cause des gigantesques dossiers qu'il avait et du coup j'ai pensé à limiter son exploration pour réduire un peu le temps c'est à dire quand il trouve le dossier cherché il arrête d'explorer tous les sous dossiers de ce dossier et il commence à explorer le dossier suivant. Voici comment les dossiers sont créés :
E:(le disque donné)/A/2009(Année)/janvier(mois)/20090208(le jour)/.............
Le but de cette fonction c'est de stocker chaque jour dans une table avec le lien de ce jour là et voici ma fonction:

<?php
//function explorer
function explorer($chemin){
 
  
     if( is_dir($chemin) ){
      $me = opendir($chemin);
      
      while($child = readdir($me)){
        
      if( $child != '.' && $child != '..' ){
      if(strlen($child)==8 && !preg_match ("/[^0-9]/", $child)){ 
               
       static  $i=0;
       global $path;

        $p = $chemin.DIRECTORY_SEPARATOR;
        $pr=str_replace("\\", "\\"."\\",$p);
        $path[$i]['day'] = $child;
        $path[$i]['path'] = $pr;
         $i++;
         // le programme va sortir et explorer les fichiers suivants
        // $chemin="une fonction qui va arreter d'explorer les sous dossiers et donne le fichier suivant";
        // explorer( $chemin );
          }  

         explorer( $chemin.DIRECTORY_SEPARATOR.$child );

            }
        }
    }

}

//end function explorer
?>


j'espère mon explication a été un peu claire et merci d'avance .
A voir également:

1 réponse

forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
13 mai 2017 à 20:52
Bonjour,

je ne suis pas sûr de tout comprendre, mais pour arrêter une boucle il suffit de tester si tu as ton résultat obtenu. si oui sortir.
 if( condition ) 
break;

ou rajouer dans le while:
 while ( ... & !condition)
0