Auslesen eines Ordners und Abrunden der MB Zahl

D

damuxu

Grünschnabel
Hi,
ich hab mal hier nu ja ein Script, womit ich auslesen kann, wie viele Dateien im Ordner sind und wie viel Speicher (in MB) diese brauchen.
nur sieht die Speichergröße etwas unübersichtlich aus. Ich wollte, dass es auf 3 Stellen nach dem Komma abgerundet wird wie z.B. aus 0.0556964874268 MB wird zu 0.056 MB

Hier ist mein derzeitiger Script:
PHP:
<?php
 if ($handle = opendir('.')) { 
      $count = 0; 
      $size = 0; 
      while (false !== ($file = readdir($handle))) { 
         if (is_file($file)) { 
            $count++; 
            $size += filesize($file) /1024 ; 
         } 
      } 
      closedir($handle); 
      echo  ' Es werden derzeit ' . $count . ' Bilder gehostet'; 
   } else { 
      echo 'Fehler: Kann Verzeichnis nicht lesen'; 
   } 



?>
<br>
mit einer Gesamtgröße von

<br>

<?php 
   if ($handle = opendir('.')) { 
      $count = 0; 
      $size = 0; 
      while (false !== ($file = readdir($handle))) { 
         if (is_file($file)) { 
            $count++; 
            $size += filesize($file) /1024 /1024; 
         } 
      } 
      closedir($handle); 
      echo ' ' . $size . ' MB'; 
   } else { 
      echo 'Fehler: Kann Verzeichnis nicht lesen'; 
   } 
?>
 
Hallo
Also vorweg, ich kenne mich mit php nur rudimentär aus, da ich perl nutze.
Aber die unter perl und auch c++ bekannte Funktion
printf "FORMAT", STRING
sollte es IMHO auch unter php geben.
Also in deinem Fall
printf("%09.3f",$size);
Wenn das nix bringt, schau dir mal
number_format()
an.
Unter perl und c++ geht das immer, aber so ich mich recht erinnere, ist da bei php ein Type double nötig.

Gruß Wolfgang
 
Hallo damuxu!

Dein Code muss nur um eine Zeile erweitert werden.

Einfach folgenden benutzen:

PHP:
<?php
if ($handle = opendir('.')) {
      $count = 0;
      $size = 0;
      while (false !== ($file = readdir($handle))) {
         if (is_file($file)) {
            $count++;
            $size += filesize($file) /1024 ;
         }
      }
      closedir($handle);
      echo  ' Es werden derzeit ' . $count . ' Bilder gehostet';
   } else {
      echo 'Fehler: Kann Verzeichnis nicht lesen';
   }



?>
<br>
mit einer Gesamtgröße von

<br>

<?php
   if ($handle = opendir('.')) {
      $count = 0;
      $size = 0;
      while (false !== ($file = readdir($handle))) {
         if (is_file($file)) {
            $count++;
            $size += filesize($file) /1024 /1024;
            $roundsize = round($size, 3);
         }
      }
      closedir($handle);
      echo ' ' . $roundsize . ' MB';
   } else {
      echo 'Fehler: Kann Verzeichnis nicht lesen';
   }
?>

"echo" verändert, da PHP ja die andere Variable ausgeben soll.
Die Funktion round( ) ..... naja ..... rundet halt Zahlen.
Anwendung: round ([zu_rundende_zahl], [anzahl_der_dezimalen]);

Dabei ist die Angabe der Dezimalen nach zwingend. Wenn keine Angabe gemacht wird, wird auf 0 Nachkommastellen d.h. ganze Zahlen gerundet.

Siehe auch noch:
SELFPHP
PHP.net-Manual
 

Ähnliche Themen

ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

Queue für copy Script

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben