hola a todos, kisiera saber si hay alguna funcion en php para medir el tamaño de una carpeta o si hay que construirla.
si hubiese que construirla, ¿alguien no la tendria ya hecha....?
supongo que si php no trae nada para medir carpetas habria que hacer un "mapeado" del directorio midiendo los tamaños de todos los archivos ahi contenidos (incluso en subdirectorios)
Llevo mucho tiempo sin programar y no recuerdo que haya ninguna función para eso...
Pero aquí te dejo esto que he hecho en un minutillo xD
<?php
function sizedir($dir)
{
static $total = 0;
$d = dir($dir);
while(false !== ($archivo = $d->read()))
{
if("." == $archivo || ".." == $archivo)
continue;
$total += sprintf("%u", filesize($archivo));
}
$d->close();
return $total; //resultado en bytes...
}
echo sizedir(".");//tamaño directorio actual :D
?>
Prueba usando la función para medir el tamaño de archivos:
$tamano=filesize("./directorio");
;)
hola, no .... la verdad ninguna de las respuestas ha resultado, la funcion de Rentero no devuelve correctamente el tamaño y presumo que es poke mide el tamaño de los archivos del primer nivel del arbol de directorios y yo necesito que mida todos los subdirectorios tambien.
y devcode, filesize no funciona con directorios ya la he probado sin exito alguno
gracias y espero otra respuesta que me sake de este apuro
jejjeej, ya...yo solo te di una idea de como podrías hacerlo no el codigo enterito :P
$directorio='path al directorio';
$tamano=exec("du -sk $directorio");
echo $tamano . ' = tamanio de ' . $directorio ;
utilizo un linux/unix y esto me funciono...
tomando en cuenta q el usuario del webserver debe tener como minio permiso para leer la carpeta...
conoces la recursividad???
bueno x si acaso nunca se sabe :)
<?php
$directorio = "/var/www/cssFiles";
echo "Total : " .Fsize($directorio);
function Fsize($dir)
{
if (is_dir($dir))
{
if ($gd = opendir($dir))
{
$cont = 0;
while (($archivo = readdir($gd)) !== false)
{
if ($archivo != "." && $archivo != ".." )
{
if (is_dir($archivo))
{
$cont += Fsize($dir."/".$archivo);
}else{
$cont += filesize($dir."/".$archivo);
echo "archivo : " . $dir."/".$archivo . " " . filesize($dir."/".$archivo)."<br />";
}
}
}
closedir($gd);
}
}
return $cont;
}
?>
ahora si los archivos son mas grandes de 2 o 4 megas no olvides implementar el sprintf("%u", filesize($archivo)).
Saludos y suerte .
1: Este tema esta muerto
2: miren la p**a fecha antes de responder
3: gracias por sus respuestas
4: esto ya fue resuelto, y si, conozco la recursividad, aqui esta el post que soluciona este tema, yo mismo lo hice Parche y revision para: Funcion para medir directorio completos (http://foro.elhacker.net/index.php/topic,127340.msg662046.html#msg662046)
pd: ¿para que revivieron este post???
tienes razon no vi la fecha jeje,
buena pregunta kien revivio el post :D
Saludos
PD. disculpa tio pero pobre higado xD°°