[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

  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 )

    ?>
    3
    1. 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;
      
      -2
      1. 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 ...
        0
        1. chapeau,Deepblue
          0
          1. Excellent, merci beaucoup pour ton aide !
            0
            1. Pas de quoi, c'est ma première participation ravi d'avoir pu t'aider .
              0
          2. Cool merci ! Y'aurait t'il une possibilité d'avoir le résultat en Méga Octets ?
            -1
            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");
              ?>
              0
              1. clic droit et tu vas sur proprietes du fichier
                -2
                1. Nan nan, je veux afficher ça sur un un site web en php.
                  Pas sur mon ordinateur. =)
                  0