Foros del Web » Programando para Internet » PHP »

Limitar Espacio

Estas en el tema de Limitar Espacio en el foro de PHP en Foros del Web. Hola, con este mensaje me estreno en los foros. Gracias por su ayuda, procuraré ayudar el maximo! Mi primera pregunta es: Hay alguna funcion en ...
  #1 (permalink)  
Antiguo 26/12/2003, 17:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 4
Antigüedad: 20 años, 3 meses
Puntos: 0
Exclamación Limitar Espacio

Hola, con este mensaje me estreno en los foros. Gracias por su ayuda, procuraré ayudar el maximo!

Mi primera pregunta es:

Hay alguna funcion en PHP que permita saber el espacio de una carpeta (directorio)? Quiero pedir-le: Si el espacio ocupado es menor de 300 kb, entonces deja subir mas archivos, y si no, no.

He mirado disk_total_space , que en teoría funciona, pero siempre me muestra el mismo resultado: 39184871424.


He usado:

Código PHP:

$df 
disk_total_space("usuaris/$nickUsuario/");
echo 
"$df"
donde $nickUsuario es la variable del nombre de usuario.
Gracias
  #2 (permalink)  
Antiguo 27/12/2003, 00:23
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Es que esa función te devuelve el espacio total... no el espacio ocupado o libre... si te fijas en los comentarios de los usuarios encontrarás esto (lo copié tal cual... perdón por el inglés):
Código PHP:
Hi there. I do a little function with returns the occupied Space in bytes :

<?php
function disk_occupied_space($dir) {
  
$total disk_total_space($dir) or die("Not attainable!");
  
$free disk_free_space($dir);
  
$ges $total $free;
  return 
$ges;
}
?>

I hope you can need it maybe ;-)
Eso es lo que estabas buscando verdad??

Saludos
  #3 (permalink)  
Antiguo 27/12/2003, 05:37
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
No creo que le sirva...
Eso te devolvera el espacio ocupado en el sistema de archivos total o de la particion, no del directorio.

Lo que tendras que hacer (por lo menos asi lo hago yo) es revisar todos los archivos de un directorio y acumular sus tamaños en una variable.
Aca tenes esta funcioncita "made in casa"
Código PHP:
function dir_espacio($dirmain$buscaSubs true) {
    if ( !
is_dir($dirmain) ) return false;
    
$tam "";
    
$dirs = array($dirmain);
    
    if ( 
$buscaSubs ) {
        while(list(, 
$dir) = each($dirs)) {
            if ( !@
$handle opendir(realpath($dir)) ) return false;
            while ( 
$tmp readdir($handle) ) {
                
$real realpath($dir)."/".$tmp;
                if ( (
is_dir($real)) && ($tmp != ".") && ($tmp != "..") ) {
                    
$dirs[] = realpath($dir)."/".$tmp;
                }
            }
            
closedir($handle);
        }
    }
    
    foreach (
$dirs as $dir) {
        if ( !@
$handle opendir($dir) ) return false;
        while ( (
$tmp readdir($handle)) !== false ) {
            if ( 
is_file(realpath($dir)."/".$tmp) ){
                
$tam += filesize(realpath($dir)."/".$tmp);
            }
        }
        
closedir($handle);
    }
    
    if ( !empty(
$tam) ){
        return 
$tam;
    } else {
        return 
false;
    }

Por defecto te manda el espacio de los archivos del directorio y todos los subdirectorios, pero si pones el segundo parametro a false, creo que te servirá:
$ocupado = espacioDir("c:\\algo\\otroalgo", false);

Última edición por fran86; 27/12/2003 a las 05:46
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:37.