Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    spazio di una directory tramite script

    Salve a tutti ecco il mio problemino :
    Cerco uno script in php che mi dia la grnadezza di una cartella faccio un esempio per farvi capire meglio

    ES.:

    io inserisco questo codice che cerco nella pagina A.php io tramite questo codice devo dare un limite cioè dico che nella cartella ci possono stare solo 10Mb allora lo script calcola le grandezze dei file presenti in una cartella che poi io darò il percorso e mi farà vedere una sbarra grafica che mi dice quanto spazio ho ancora a disposizione e quanta ne sto usando
    ecco un'img


    nell'img c'è anche il grafico per sapere la banda ma per il momento mi serve solo quella della cartella

    Grazie.

  2. #2
    ciao, allora come prima cosa fai la scansione dei file presenti nella directory, poi file per file ti calcoli la dimensione con la funzione filesize() e sommi questa dimensione al totale.
    Un problema può essere la nidificazione delle cartelle perchè filesize() restituisce la grandezza di un file, ma da come risposta 0 ad una cartella, la soluzione è una funzione ricorsiva, ovvero che chiama sè stessa, che dovrebbe funzionare in questo modo:

    <<inizio>> scansione della dir data
    se il file è un file aggiungo al totale la sua dimensione,
    se il file è una cartella <<inizio>> scansione della cartella, ritorno dimensione totale, se non ci sono più file ritorno la dimensione totale.

    ti scrivo un abbozzo di codice:
    Codice PHP:
    <?

    function dimensione($dir)
    {
    $handle opendir($dir); //apro la directory

    while($file readdir($handle)) //la leggo ciclicamente fino alla fine
     
    if ($file != "." and $file != ".."//escludo queste 2 dir
      
    if (is_dir($file))
        
    $tot+=dimensione($file); //richiamo la funzione de ho trovato una dir
      
    else if (is_file($file))
       
    $tot+=filesize($file); //aggiungo la dimensione del file corrente
    closedir($handle);

    return 
    $tot;
    }

    ?>

    la funzione la invochi la prima volta con argomento il nome della dir da scandire
    Codice PHP:
    echo "la dimensione della cartella pippo è ".dimensione("./pippo")." bytes"
    e come risultato hai la dimensione totale della cartella, sottocartelle incluse..
    ..nonl'ho testato, ma dovrebbe funzionare, cmq mi trovi qui!
    ciao!!
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  3. #3
    ti ringrazio per il tuo aiuto ma lho script nn funge

  4. #4
    mmm che errori da?!
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  5. #5
    niente nn esce nulla

  6. #6
    hai ragione! ora l'hoprovato, avevo fattoun paio di errori di concetto e di distrazione..

    ora va, ricordati che la dimesione che ritorna è in byte, quindi se lo vuoi in kilobyte lo devi poi dividere per 1024 etc...

    Codice PHP:
    <? 

    function dimensione($dir
    {
    if (
    substr($dir,-1) != "/"//normalizzo il nome della dir aggiungendo uno / se non c'è alla fine
     
    $dir.="/";

    $tot=0//azzero il contatore

    $handle opendir($dir); //apro la directory 

    while($file readdir($handle))//la leggo ciclicamente fino alla fine 
    if ($file != "." and $file != ".."//escludo queste 2 dir 
      
    if (is_dir($file)) 
        
    $tot=$tot+dimensione($file); //richiamo la funzione se ho trovato una dir 
      
    else
       
    $tot=$tot+filesize($dir.$file); //aggiungo la dimensione del file corrente 
    closedir($handle); 

    return 
    $tot
    }
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  7. #7
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Secondo me c'è un piccolo errore che impedisce alla tua funzione di scendere oltre i due livelli di profondità il controllo da fare è is_dir($dir.$file), se non ti scoccia l'intrusione l'ho leggermente abbreviata usando l'operatore ternario:
    codice:
    function dimensione($dir) {
      if (substr($dir,-1) != "/")
        $dir.="/";
    
      $tot = 0; //azzero il contatore
    
      $handle = opendir($dir); //apro la directory
    
      while($file = readdir($handle)) {//la leggo ciclicamente fino alla fine
        if ($file != "." && $file != "..")
          $tot += is_dir($dir.$file) ? 
                  dimensione($dir.$file) :
                  filesize($dir.$file);
      }
    
      closedir($handle);
    
      return $tot;
    }

  8. #8
    grazie! hai ragione!!
    ..e anche sull'operatore ternario.. è da tempo hce vorrei iniziare a usarlo ma a volte mi cnfonde un po' le idee e quindi non mi è ancora automatico ^__^

    ciau ciau!!
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.