Problème de recursivité et is_dir

Problème de recursivité et is_dir - PHP - Programmation

Marsh Posté le 27-10-2006 à 11:28:57    

Bonjour,
 
Je dois récupérer un adresse de fichier, son nom et sa taille à partir d'un lecteur réseau et le tout en récursif.
L'ensemble fonctionne très bien sauf jusqu'à un certain point : Ca bloque sur un fichier et ensuite ça bug....
 
explication :
 
Voilà le code source :

Code :
  1. <?php
  2. function list_dir($name, $handle) {
  3. if($dir = opendir($name)) {
  4.  while($file = readdir($dir)) {
  5.   if(!in_array($file, array(".", ".." ))
  6.       && !ereg("Communication", $file)
  7.       && !ereg("DAAF", $file)
  8.       && !ereg("Fiscal", $file)
  9.       && !ereg("LIVRET D'ACCUEIL", $file)
  10.      ) {
  11.    //dossier  
  12.    if(is_dir($name."/".$file)) {
  13.     echo "<b>dossier : ".$name."\\".$file."</b><br>\n";
  14.     list_dir($name."\\".$file, $handle);
  15.    }
  16.    //fichier
  17.    else {
  18.     echo "fichier ".$name."\\".$file."<br>";
  19.     $csv=$name.";".$file.";".date("Y-m-d H:i:s", filemtime($name."\\".$file)).";;;;;\r\n";
  20.     fwrite($handle, $csv);
  21.    }
  22.   }
  23.  }
  24.  closedir($dir);
  25. }
  26. }
  27. $handle = fopen("fichiers.csv", "w+" );
  28. list_dir("X:\\", $handle);
  29. echo "Fini";
  30. fclose($handle);
  31. ?>


 
et là, ce qu'il y a sur la page web :

Citation :


dossier : X:\\Réformes\Propositions de réforme
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc\actus.php
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc\actus.php\actus.php
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc\actus.php\actus.php\actus.php
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc\actus.php\actus.php\actus.php\actus.php
dossier : X:\\Réformes\Propositions de réforme\Réformes 1994\Réformes closes\Réformes closes en abandon\94-R034 STR 94.02 Modification du champ d'application de la majoration de la durée d'assurance vieillesse pour enfant\Clôture 94-R034 STR94.02 maj° durée assurance.doc\actus.php\actus.php\actus.php\actus.php\actus.php
[...]


Le script plante au bout de quelques secondes.
 
A noter que ça fonctionne très bien pour d'autre dossier, mais là au niveau du fichier doc le is_dir croit que c'est un répertoire.... De plus, ça boucle sur le fichier actus.php qui est au même niveau que le script -_-
 
Le dossier et les fichiers qui bug sont en lecture seule, est ce que ça serais ça le problème ?
 
 
Merci de votre aide !

Reply

Marsh Posté le 27-10-2006 à 11:28:57   

Reply

Marsh Posté le 29-10-2006 à 12:10:20    

Je pense pas.
 
Essaye ton script sur des chemins plus simples. C'est peut être un problème de jeu de caractères.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed