medir tamaño de carpetas con php

Iniciado por SERBice, 22 Marzo 2006, 00:51 AM

0 Miembros y 1 Visitante están viendo este tema.

SERBice

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)

Rentero

#1
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
?>
Firmado.

devcode

Prueba usando la función para medir el tamaño de archivos:


$tamano=filesize("./directorio");


;)

SERBice

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

Rentero

jejjeej, ya...yo solo te di una idea de como podrías hacerlo no el codigo enterito :P
Firmado.

n.a.u.t.a

#5
$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...

alone-in-the-chat

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 "&nbsp;&nbsp;" 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 .
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

SERBice

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

pd: ¿para que revivieron este post???

alone-in-the-chat

tienes razon no vi la fecha jeje,
buena pregunta kien revivio el post :D

Saludos

PD. disculpa tio pero pobre higado xD°°
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b