Total | 1503042 | 1.4 Mo |
---|
jpg | 617117 | 602.7 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();