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