| Total | 1534974 | 1.5 Mo | 
|---|
| jpg | 649049 | 633.8 Ko | 
| php | 357837 | 349.5 Ko | 
| txt | 249011 | 243.2 Ko | 
| mdb | 147456 | 144.0 Ko | 
| dat | 74704 | 73.0 Ko | 
| xml | 40907 | 39.9 Ko | 
| bat | 11248 | 11.0 Ko | 
| csv | 4762 | 4.7 Ko | 
| log | 0 | 0 | 
| md5 | 0 | 0 | 
<?php
/**
 * @file calculer_taille_repertoire.php
 * @brief Ce script va calculer la taille occupée par le site et le détail par extension de fichier.
 *
 * @author hughes monget
 * @see http://monget.com/
 * @since 2008-01-07
 * @date 2008-01-07
 */
// Modification des paramètres du php.ini.
error_reporting(E_ALL | E_NOTICE | E_STRICT);
set_time_limit(0);
$arr_ini_set = array('log_errors' => 0, 'display_errors' => 1, 'error_log' => 0, 'html_errors' => 0, 'date.timezone' => 'Europe/Paris');
array_walk($arr_ini_set, create_function('$v, $k', 'ini_set($k, $v);'));
// setlocale(LC_ALL, 'fr_FR');
/**
 * Fonction récursive de parcours des répertoires.
 *
 * @param $str_filedir - string - IN - Un fichier ou un répertoire.
 * @param $arr_info - array of integer - IN / OUT - key == extension de fichier et value == somme des tailles de fichier portant cette extension.
 */
function parcours_recursif($str_filedir, &$arr_info)
{
    if (is_dir($str_filedir))
    {
        $str_filedir = rtrim($str_filedir, DIRECTORY_SEPARATOR); // On dégage le / final.
        $arr_liste_fichier = glob($str_filedir.DIRECTORY_SEPARATOR.'*');
        // On parcours le répertoire.
        if ($arr_liste_fichier)
        {
            foreach ($arr_liste_fichier as $str_fichier)
            {
                $callback = __FUNCTION__;
                $callback($str_fichier, $arr_info); // Récursion.
            }
        }
    }
    elseif (is_file($str_filedir))
    {
        // On extrait l'extension du fichier.
        $str_extension = pathinfo($str_filedir, PATHINFO_EXTENSION);
        $str_extension = strtolower($str_extension);
        $str_extension = trim($str_extension);
        if (!isset($arr_info[$str_extension]))
        {
            $arr_info[$str_extension] = 0;
        }
        // On additionne la taille du fichier.
        $arr_info[$str_extension] += filesize($str_filedir);
    }
}
/**
 * Cette fonction va rendre une taille en octet humainement compréhensible.
 *
 * @param $int_taille - integer- IN - Une taille en octet
 * @return string - La taille exprimée en Ko ou Mo ou Go ou ... et postfixé par l'unité.
 */
function humaniser_taille($int_taille)
{
    static $arr_liste = array('Octet', 'Ko', 'Mo', 'Go', 'To');
    if (is_numeric($int_taille) && $int_taille > 0)
    {
        $bool_decimal = FALSE;
        $int_taille = floatval($int_taille);
        foreach ($arr_liste as $str_unite)
        {
            if ($int_taille < 1000.0)
            {
                break;
            }
            $int_taille = $int_taille / 1024.0;
            $bool_decimal = TRUE;
        }
        if ($bool_decimal)
        {
            $int_taille = number_format($int_taille, 1, '.', ' ');
        }
        return $int_taille.' '.$str_unite;
    }
    return $int_taille;
}
/**
 * Fonction principale.
 */
function main()
{
    $arr_info = array();
    $str_repertoire = realpath(dirname(__FILE__));
    $str_repertoire = dirname(__FILE__);
    parcours_recursif($str_repertoire, $arr_info);
    // $arr_info = array_filter($arr_info, create_function('$i', 'return ($i >= 1024000);'));
    arsort($arr_info, SORT_NUMERIC);
    echo
    '
        <style type="text/css">
        <!--
        table
        {
            border-collapse: collapse;
        }
        td, th
        {
            padding: 5px;
        }
        table, td, th
        {
            border: 1px solid #000;
        }
        -->
        </style>
    ';
    echo '<table border="1">';
    echo '<tr><th>Total</th><td>',($int_taille = array_sum($arr_info)),'</td><td>',humaniser_taille($int_taille),'</td></tr>';
    foreach ($arr_info as $str_extension => $int_taille)
    {
        if (!$str_extension)
        {
            $str_extension = '???';
        }
        echo '<tr><td>',$str_extension,'</td><td>',$int_taille,'</td><td>',humaniser_taille($int_taille),'</td></tr>';
    }
    echo '</table>';
    echo '<hr />';
    highlight_file(__FILE__);
}
main();