Total15030421.4 Mo
jpg617117602.7 Ko
php357837349.5 Ko
txt249011243.2 Ko
mdb147456144.0 Ko
dat7470473.0 Ko
xml4090739.9 Ko
bat1124811.0 Ko
csv47624.7 Ko
log00
md500

<?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_setcreate_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_filedirDIRECTORY_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_filedirPATHINFO_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_taille1'.'' ');
        }
        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_infoSORT_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();