Script php pour connaitre la taille fichier

Bonjour,
je recherche un script php qui permetterais de voir la taille d'un groupe de fichier donné : je fais du sous hébergement en sous-dmaine depuis peux, et j'aimerais que l'hébergement soit au maximum de 40Mo, pour cela, je recherche le moyen avec un script php de cherche la taille du groupe de fichier du site, et qu'il soit afficher ainisi que la liste des fichiers. J'ai déjà créer un script php qui afficherra des stats et une bare de progression de la taille, mais je ne sais pas comment faire pour créer un moyen de cherche la taille, donc, si qqu avait un bon script php (ou asp, aspx; cgi, etc...) se serait cool. Si des modifs sont néscéssaire pour qu'il colle à la perfection avec mon site, ya pas de problèmes, mais je suis short au niveau du temps. Et j'ai encore environ 60 pages à finir, donc pas le temps de faire cette portion là. Merci de vos futures réponses.

6 réponses

  1. Bonjour,

    T'as de la chance, j'ai fait un script comme ça pour mon site :)
    // Calcul la taille d'un répertoire (avec ou sans les sous-dossiers)
    function calculeTaille($dir, $recursif = true)
    {
    	$taille = 0;
    	if ($dh = opendir($dir))
    		while (($f = readdir($dh)) !== false)
    			if ($f !== '.' && $f !== '..')
    			{
    				$file = $dir."/".$f;
    				if (is_file($file))
    					$taille += filesize($file);
    				else if (is_dir($file) && $recursif)
    					$taille += calculeTaille($file);
    			}
    	return $taille;
    }
    
    // Transforme un nombre en nombre d'octets avec unité adaptée
    function formateOctets($nombre)
    {
    	$resultat = "";
    	$unites = array('o', 'Kio', 'Mio', 'Gio', 'Tio');
    	$nbUnitesConnues = sizeof($unites);
    	$i = 0;
    	$nombreTemp = $nombre;
    	while ($i < $nbUnitesConnues && ($nombreTemp >= 1))
    	{
    		$resultat = "$nombreTemp ".$unites[$i];
    		$nombreTemp = floor($nombreTemp / 102.4) / 10;
    		$i++;
    	}
    	return $resultat;
    }
    
    $taille = formateOctets(calculeTaille('.', true));
    
    echo "$taille utilisés";

    N'hésite pas si tu as des questions.

    Xavier
    1. Tu veux la taille d'un répertoire ou la taille d'un fichier?
      1. Comment faire pour voir apparaître la liste des fichiers (mersi bcp, ce marche très bien)
        1. Dans la boucle qui parcourt les fichiers, rajoute
          echo $file;
          N'hésite pas à signaler que ton problème est résolu, et à marquer les solutions qui te conviennent !
        2. Désolé mais ca ne marche pas, il est possible que je me sois tromper, voici le code avec le echo :

          <?php
          // Calcul la taille d'un répertoire (avec ou sans les sous-dossiers)
          function calculeTaille($dir, $recursif = true)
          {
          $taille = 0;
          if ($dh = opendir($dir))
          while (($f = readdir($dh)) !== false)
          if ($f !== '.' && $f !== '..')
          {
          $file = $dir."/".$f;
          if (is_file($file))
          $taille += filesize($file);
          else if (is_dir($file) && $recursif)
          $taille += calculeTaille($file);
          echo '$file';
          }
          return $taille;
          }

          // Transforme un nombre en nombre d'octets avec unité adaptée
          function formateOctets($nombre)
          {
          $resultat = "";
          $unites = array('o', 'Kio', 'Mio', 'Gio', 'Tio');
          $nbUnitesConnues = sizeof($unites);
          $i = 0;
          $nombreTemp = $nombre;
          while ($i < $nbUnitesConnues && ($nombreTemp >= 1))
          {
          $resultat = "$nombreTemp ".$unites[$i];
          $nombreTemp = floor($nombreTemp / 102.4) / 10;
          $i++;
          }
          return $resultat;
          }

          $taille = formateOctets(calculeTaille('.', true));

          echo "$taille utilisés";
          ?>
        3. c'est bon, j'ai trouver le problème, j'ai mis des guillemets alors qui fallait pas.
      2. comment ferais-tu, pour que cela affiche également chaques fichier avec la taille de chaques fichier, car je suis franchement à la bourre.
        1. Tu pousses un peu là quand même ! T'as tout ce qu'il te faut sous la main...
                      if ($f !== '.' && $f !== '..')
                      {
                          $file = $dir."/".$f;
                          if (is_file($file))
                          {
                              $taille += filesize($file);
                              echo "$file......" . formateOctets(filesize($file));
                          }
                          else if (is_dir($file) && $recursif)
                          {
                              $taille += calculeTaille($file);
                              echo "$file......" . formateOctets(calculeTaille($file));
                          }
                      }
          
        2. merci bcp, je n'ai plus besoin de rien
        3. Donc c'est fni