Michael_B42: Langsames count_file Script

Hallo Zusammen

Ich habe mir in den letzten Monaten eine Fotogalerie zusammen gesetzt und ein count_file Script zum JPGs zählen eingesetzt. Nur leider läuft das Script mit zunehmender Menge der Bilder immer langsamer. Zur Zeit befinden sich rund 5200 Bilder in der Galerie und das Zählen dauert immer länger. Gibt es schnelleres Script zum Bilder zählen?

Ich hänge das Verwendete mal an:

  
  
<?PHP  
  function count_file($dir)  
    {  
  
    // Ueberprueft ob das angegebene Verzeichnis existiert  
    if(is_dir($dir))  
      {  
      $afile[directory]=0;  
      $afile[file]=0;  
  
      chdir($dir);  
      $handle=opendir(".");  
      while($file=readdir($handle))  
        {  
  
        // Handelt es sich bei $file um ein Unterverzeichnis?  
        if(is_dir($file) && $file!="." && $file!="..")  
          {  
  
          // directory um eins erhoehen  
          $afile[directory]++;  
  
          // rekursiver Aufruf mit aktuellem Verzeichnis  
          $y=count_file($file);  
  
          // Ergebnisse des rekursiven Aufrufs der Funktion zu  
          // directory und file aufaddieren  
          $afile[directory]+=$y[directory];  
          $afile[file]+=$y[file];  
          }  
  
        // Handelt es sich bei $file um eine Datei?  
        if(is_file($file))  
          {  
          if(strstr($file,".JPG")){ //Nur .jpg-Dateien anzeigen...  
  
          // file um eins erhoehen  
          $afile[file]++;  
          }  
          }  
  
  
  
  
          // Handelt es sich bei $file um eine Datei?  
        if(is_file($file))  
          {  
          if(strstr($file,".jpg")){ //Nur .jpg-Dateien anzeigen...  
  
          // file um eins erhoehen  
          $afile[file]++;  
          }  
          }  
  
  
  
  
        }  
  
      // Verzeichnisstruktur zurueck gehen  
      if(stristr($dir,"../")) chdir($_SERVER["DOCUMENT_ROOT"].substr($_SERVER["PATH_INFO"],0,strrpos($_SERVER["PATH_INFO"],"/")));  
      elseif($dir!=".") chdir("../");  
  
      //closedir($handle);  
      }  
  
    return $afile;  
    }  
  
  // Aufruf der Funktion  
  
  $dir="gast_galerien/";  
  $atest=count_file($dir);  
  echo"".$atest[file];  
  
  ?>  
  

Danke für eventuelle Inputs

Gruss Michael

  1. Hallihallo!

    Ich würde fast darauf wetten, dass glob schneller ist.
    Die Kommentare auf der verlinkten Seite werden Dich wahrscheinlich auch interessieren, da sind ein paar Bespiele dabei, die (fast) das machen, was Du suchst.

    Beste Grüsse,
        Tobias Hahner

    1. Hallo Tobias

      Danke für den Hinweis, ich habe das Script so anpassen können, dass mir die richtige Bilderanzahl gezeigt werden. Nun noch ein andere Frage. Wie kann ich es erreichen, dass das Script Bilder aus verschiedenen Verzeichnissen statt nur einem wiedergibt?

      Gruss Michael

      1. Hallihallo!

        Wie kann ich es erreichen, dass das Script Bilder aus verschiedenen Verzeichnissen statt nur einem wiedergibt?

        Gleich der erste Nutzerkommentar scheint in etwa das zu tun, was Du möchtest. Vorausgesetzt natürlich, Du hast in Deinen einzelnen Verzeichnisse nicht nochmal Verzeichnisse drin.
        Ansonsten kämst Du um eine Rekursion wahrscheinlich nicht herum...

        Beste Grüsse,
            Tobias Hahner

        1. Vorausgesetzt natürlich, Du hast in Deinen einzelnen Verzeichnisse nicht nochmal Verzeichnisse drin.
          Ansonsten kämst Du um eine Rekursion wahrscheinlich nicht herum...

          Hallo

          Doch das ist genau der Fall. Man kann sich in der Galerie vom Start her durch mehrere Kategorien in die Zielkategorie durchwählen. Dabei wird auf jeder Seite die Anzahl der Bilder angegeben, dabei kommen dann immer mehrere Verzeichnisse zusammen.

          Wie sieht das mit der Rekursion im Script aus?

          Gruss Michael