Bonsoir,
J'ai une fonction qui me renvoie la taille d'un fichier, de ce côté la tout se passe bien en revanche pour les répertoires(dossier) tout plante et je ne comprend pas d'ou vient le problème ?

la function:

function taille($fichier){
        // Lecture de la taille du fichier
        $taille = filesize($fichier);
        // Conversion en Go, Mo, Ko
        if ($taille >= 1073741824) 
        { $taille = round($taille / 1073741824 * 100) / 100 . " Go"; }
        elseif ($taille >= 1048576) 
        { $taille = round($taille / 1048576 * 100) / 100 . " Mo"; }
        elseif ($taille >= 1024) 
        { $taille = round($taille / 1024 * 100) / 100 . " Ko"; }
        else 
        { $taille = $taille . " Octet"; } 
        if($taille==0) {$taille="-";}
        return $taille;
    }

3 réponses


vavoir
Auteur
Réponse acceptée

EUREKA !

function taille_dossier($rep){
    $racine=@opendir($rep);
    $taille=0;
    while($dossier=@readdir($racine)){
      if(!in_array($dossier, array("..", "."))){
        if(is_dir("$rep/$dossier")){
          $taille+=taille_dossier("$rep/$dossier");
        }else{
          $taille+=@filesize("$rep/$dossier");
        }
      }
    }
    @closedir($racine);
   if ($taille >= 1073741824) 
        { $taille = round($taille / 1073741824 * 100) / 100 . " Go"; }
        elseif ($taille >= 1048576) 
        { $taille = round($taille / 1048576 * 100) / 100 . " Mo"; }
        elseif ($taille >= 1024) 
        { $taille = round($taille / 1024 * 100) / 100 . " Ko"; }
        else 
        { $taille = $taille . " Octet"; } 
        if($taille==0) {$taille="-";}
        return $taille;
  }

Oublié disk_total_space

Ben sa plante parce que c'est pas fait pour, fichier != repertoire.

Pour un directory, tu peux boucler sur les fichiers qu'il contient et additionner les différentes tailles.
Sinon pour un truc plus académique il y a ca.

vavoir
Auteur

Tout s'explique ^^ Je viens de fouiller la doc je vais voir si j'arrive à adpater " disk_total_space" à la place de "filesize".