[PHP] Poids total d'un dossier

Résolu
Bonjour,
j'aimerais savoir comment faire pour voir le poids total d'un dossier en Mo.
J'aimerais ainsi faire quelque chose de ce genre: Il y a 23.19 Mo utilisé.
Si ça pourrait afficher aussi plus prècis comme j'ai mis ce dessus, ce serait
encore mieux. Merci d'avance pour votre future réponse. Bonne soirée.

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. ça te convient ?

    <?php
    function foldersize($path) {
    $total_size = 0;
    $files = scandir($path);

    foreach($files as $t) {
    if (is_dir($t)) {
    if ($t<>"." && $t<>"..") {
    $size = foldersize($path . "/" . $t);

    $total_size += $size;
    }
    }
    else {
    $size = filesize($path . "/" . $t);

    $total_size += $size;
    }
    }
    return $total_size;
    }
    function format_size($size , $round) {
    //Size must be bytes!
    $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    for ($i=0; $size > 1024 && $i < count($sizes) - 1; $i++) $size /= 1024;
    return round($size,$round).$sizes[$i];
    }
    $total_size = foldersize("Mondossier");
    echo format_size ($total_size, 2 )

    ?>
    1. Voila bon courage,

      <?php
      function foldersize($path) {
      $total_size = 0;
      $files = scandir($path);

      foreach($files as $t) {
      if (is_dir($t)) {
      if ($t<>"." && $t<>"..") {
      $size = foldersize($path . "/" . $t);

      $total_size += $size;
      }
      }
      else {
      $size = filesize($path . "/" . $t);

      $total_size += $size;
      }
      }
      return $total_size;
      }
      echo foldersize("mondossier");
      ?>
      1. Cool merci ! Y'aurait t'il une possibilité d'avoir le résultat en Méga Octets ?
        1. Excellent, merci beaucoup pour ton aide !
          1. Pas de quoi, c'est ma première participation ravi d'avoir pu t'aider .
        2. Attention s'il y a d'autre repetroire en sous-arborescence il ne les calcule pas ;-) ... ce n'est donc pas full friendly comme technique ...
          1. clic droit et tu vas sur proprietes du fichier
            1. Nan nan, je veux afficher ça sur un un site web en php.
              Pas sur mon ordinateur. =)
          2. Pour le formatage de la taille

            class Sizer { 
                 
                public static function size($file) { 
                 return $this->format(filesize($file)); 
                } 
            
                public static function format($size) { 
                 list($sized, $num) = $this->sizeRec($size); 
                 $e = array('o', 'Ko', 'Mo', 'Go', 'To', 'XXL'); 
                 $sized = round($sized, 3); 
                 return array($size, $sized.$e[$num], $num); 
                } 
                 
                private static function sizeRec($size, $num = 0) { 
                 if ($size > 1024) 
                  return $this->sizeRec($size / 1024, ++$num); 
                 return array($size, $num); 
                } 
            
            } 
            list($size, $format, $exp) = Sizer::size('/path/vers/mon/fichier'); 
            echo $format;