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.

Exemple : taille d'un dossier

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');
} 
Exemple : taille d'un dossier