2 Petites fonctions pour calculer la taille d’un répertoire en PHP:

// Pour calculer la taille d'un répertoire de façon récursive, résultat en Bytes
function TailleRepertoire($DirectoryPath) {
    $Size = 0;
    $Dir = opendir($DirectoryPath);

    if (!$Dir)
        return -1;

    while (($File = readdir($Dir)) !== false) {

        // On ne prends pas les points
        if ($File[0] == '.') continue; 

        // Sous-dossier ou la taille des fichiers
        if (is_dir($DirectoryPath . $File))
            $Size += TailleRepertoire($DirectoryPath . $File . DIRECTORY_SEPARATOR);
        else
            $Size += filesize($DirectoryPath . $File);
    }

    closedir($Dir);

    return $Size;
}

function TaillePourHumais($size) {
    // Pour afficher la taille en Ko, Mo, Go...
    // Adaptation: http://www.php.net/manual/en/function.filesize.php

    $mod = 1024;

    $units = explode(' ','B KB MB GB TB PB');
    for ($i = 0; $size > $mod; $i++) {
        $size /= $mod;
    }

    return round($size, 2) . ' ' . $units[$i];
}

$TailleEnBytes = TailleRepertoire('data/');
echo $TailleEnBytes;
echo "<br />";
echo TaillePourHumais($TailleEnBytes);

Résultat:

50996647
48.63 MB

Voter !