number_files_and_size.php
<?php
if (isset($_POST["nivel"])) {
$mostrar_hasta_nivel = $_POST["nivel"];
$comenzar_nivel_inferior = $_POST["comenzar_nivel_inferior"];
// $mostrar_hasta_nivel = 3;
global $nivel_directorio_raiz;
global $nivel_directorio;
$path = dirname(__FILE__);
if ($comenzar_nivel_inferior == "si") {
$path = substr($path, 0, strrpos($path, "/"));
}
$nivel_directorio_raiz = count(explode("/", $path)) - 1;
$numero_fila = 1;
// Comienzo de Tabla
echo "<table border='1' cellpadding='3' cellspacing='0'>";
// Fila encabezado
echo "<tr style='font-size: 100%; font-weight: bold;' bgcolor='#e2e2e2'><td></td><td>Ruta</td><td align='center'>Nivel</td><td align='right' style='color:#0000ff;'>Ficheros</td><td align='right'>Acumulado fich.</td><td align='right'>Directorio</td><td align='right' style='color:#0000ff;'>Tamaño</td><td align='right'>Acumulado tamaño</td></tr>";
// Inicio Filas de datos
echo "<tr>";
//Función que se invoca a si misma de forma recursiva según recorre el directorio raiz ($path)
FileCount($path, $mostrar_hasta_nivel, $nivel_directorio_raiz);
// Din Filas de datos
echo "</tr>";
// Fin de tabla
echo "</table>";
echo "<div style='font-size: 120%;'>";
echo "<br>Total ficheros en la ruta <b><em>" . $path . ":</em> " . number_format($count,0,",",".") . "</b><br>";
echo "Tamaño total ficheros: <b>". number_format($acumulado_tamanho, 0,",",".") . " Kb.</b><br>";
echo "</div>";
echo "<div style='min-height: 60px;'></div>";
} else {
?>
<form name="formulario" id="formulario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<br /><h2>Informe del Alojamiento por directorios (Número de Archivos y Tamaño)</h2>
<br />Nivel de directorios a mostrar: <input type="text" name="nivel" id="nivel" value="3"><br /><br />
<input type="checkbox" name="comenzar_nivel_inferior" value="si" checked="checked"/> Comenzar en nivel de directorio inmediatamente inferior a la ubicación de este módulo PHP<br />(<?php echo dirname(__FILE__) ?>)<br /><br />
<input type="submit" name="comenzar" id="comenzar" value="Comenzar proceso"><br /><br />
</form>
<?php
}
function FileCount($dir, $mostrar_hasta_nivel, $nivel_directorio_raiz){
global $count;
global $count_anterior;
global $suma_tamanho;
global $acumulado_tamanho;
$arr=explode('&',$dir);
foreach($arr as $val){
global $ruta_actual;
if(is_dir($val) && file_exists($val)){
global $total_directorio;
global $numero_fila;
$total_directorio = 0;
$ob=scandir($val);
foreach($ob as $file){
if($file=="."||$file==".."){
continue;
}
$file=$val."/".$file;
if(is_file($file)){
$count++;
$suma_tamanho = $suma_tamanho + filesize($file)/1024;
$acumulado_tamanho = $acumulado_tamanho + filesize($file)/1024;
$total_directorio++;
} elseif(is_dir($file)){
FileCount($file, $mostrar_hasta_nivel, $nivel_directorio_raiz);
}
}
$nivel_directorio = count(explode("/", $val)) - 1;
if ($nivel_directorio > $mostrar_hasta_nivel) {
} else {
$atributo_fila = (($numero_fila%2)==1 ? "background-color:#ffffff;" : "background-color:#f2f2f2;");
echo "<tr style='".$atributo_fila."'><td>".$numero_fila."</td><td>".$val." </td><td align='center'>".$nivel_directorio."</td><td align='right' style='color:#0000ff;'>".number_format(($count - $count_anterior),0,",",".")."</td><td align='right'>".number_format($count,0,",",".")."</td><td align='right'>".number_format($total_directorio,0,",",".")."</td><td align='right' style='color:#0000ff;'>".number_format($suma_tamanho,0,",",".")." Kb.</td><td align='right'>".number_format($acumulado_tamanho,0,",",".")." Kb.</td></tr>";
$count_anterior = $count;
$suma_tamanho = 0;
$numero_fila++;
}
}
}
}
?>