Il peut être intéressant pour certains traitements de connaître la taille
totale d'un dossier. PHP ne fournit pas de fonction donnant cette
information et nous devons donc en écrire une.
Nous utiliserons ici aussi la récursivité pour caculer la
taille de chacun des sous-dossiers éventuels d'une arborescence.
Quand nous sommes en présence d'un fichier, la fonction filesize()
nous renvoie sa taille, qui est cumulée dans une variable renvoyée en
fin de traitement par la fonction.
Le résultat brut que nous obtenons peut être formaté pour afficher
des tailles en ko, Mo, etc. La fonction sprintf()
nous y aide :
/**
* Formate un nombre en octets
* @param integer $taille Nombre d'octets
* @return string Taille en octets, ko, Mo, etc.
*/
function formateTaille($taille) {
if ($taille == 0) {
return '0 o';
}
if($taille <= 1024) {
return $taille.' o';
}
if($taille <= (10*1024)) {
return sprintf("%.2f k%s",($taille/1024),'o');
}
if($taille <= (100*1024)) {
return sprintf("%.1f k%s",($taille/1024),'o');
}
if($taille <= (1024*1024)) {
return sprintf("%d k%s",($taille/1024),'o');
}
if($taille <= (10*1024*1024)) {
return sprintf("%.2f M%s",($taille/(1024*1024)),'o');
}
if($taille <= (100*1024*1024)) {
return sprintf("%.1f M%s",($taille/(1024*1024)),'o');
}
return sprintf("%d M%s",($taille/(1024*1024)),'o');
}