[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.
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
-
ç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 )
?> -
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; -
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 ...
-
chapeau,Deepblue
-
Excellent, merci beaucoup pour ton aide !
-
Cool merci ! Y'aurait t'il une possibilité d'avoir le résultat en Méga Octets ?
-
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");
?> -
clic droit et tu vas sur proprietes du fichier