Avatar billede mpj_86 Nybegynder
12. februar 2005 - 15:10 Der er 14 kommentarer og
1 løsning

Skal vises i mb

Hej

Jeg har dette stykke kode som skriver for meget siden fylder og hvor mange filer den består af...

Er der en der kan få den til at udskrive i mb istedt for bytes


function dirsize($dir) {
    $size = 0;
    $num  = 0;
    if( substr($dir,-1,1) != '/' ) 
        $dir .= '/';
    if($handle = opendir($dir)) {
        while(($file = readdir($handle)) !== false ) {
            $num++;
            if( $file == '.' || $file == '..' )
                continue;
            if( is_dir($dir . $file) ) {
                $res = dirsize($dir . $file . '/' );
                if( $res === false ) {
                    return false;
                }
                $size += $res[0];
                $num  += $res[1];
            }
            else {
                $size += filesize($dir . $file);
            }
        }
        closedir($handle);

        return array($size,$num);
    }
    else
        return false;
}

$res = dirsize('.');

echo "Siden fylder: {$res[0]} MB.<br>";
echo "Siden bestå af ialt: {$res[1]} Filer";
Avatar billede jakoba Nybegynder
12. februar 2005 - 15:14 #1
echo "Siden fylder: ". ($res[0]/1000000) ." MB.<br>";
Avatar billede detox Nybegynder
12. februar 2005 - 15:17 #2
Eller:

printf ("Siden fylder: %0.2f MB.<br />", $res[0]/(1024*1024));
Avatar billede mpj_86 Nybegynder
12. februar 2005 - 15:19 #3
Jeg takker detox smid lige et svar...
Avatar billede expnet Seniormester
12. februar 2005 - 15:20 #4
jeg forstår ikke dette script jeg prøve at ligge det i en mappe for sig selv og den siger at der er 3 filer men der ligger kun den fil med det script i (LOL).
Avatar billede mpj_86 Nybegynder
12. februar 2005 - 15:26 #5
Hmm jeg tjekkede det også lige og den skriver 13 filer for meget hos mig...

Nogen der har en ide om hvorfor den går det?

Tæller den nogen skjulte filer med fra serveren?
Avatar billede detox Nybegynder
12. februar 2005 - 15:29 #6
Den tæller jo osse mapper + ./ og ../
Avatar billede jakoba Nybegynder
12. februar 2005 - 15:29 #7
i all windows mapper er der altid 2 ekstra 'mapper'
    '.'    er "denneher mappe"
    '..'    er "den mappe denneher mappe ligger i"
de skal ikke tælles med når du tæller mapper.
så flyt din tælle linie så de ikke kommer med:
            if( $file == '.' || $file == '..' )
                continue;
            $num++;              // først efter '.' og '..' er sorteret fra
Avatar billede detox Nybegynder
12. februar 2005 - 15:30 #8
Eller med andre ord den tæller alt når den står der, måske du skulle flytte den ned ved: $size += filesize($dir . $file);
Avatar billede mpj_86 Nybegynder
12. februar 2005 - 15:30 #9
Oki..

detox: kan du få den til så den kun tæller filerne?

Hvor mange points skal du have for det?
Avatar billede detox Nybegynder
12. februar 2005 - 15:37 #10
Du kunne lave det sådan:

<?
function dirsize($dir) {
    global $size;
    global $num;
    if( substr($dir,-1,1) != '/' ) 
        $dir .= '/';
    if($handle = opendir($dir)) {
        while(($file = readdir($handle)) !== false ) {
            if( $file == '.' || $file == '..' )
                continue;
            if( is_dir($dir . $file) ) {
                dirsize($dir . $file . '/' );
            }
            else {
                $num++;
                $size += filesize($dir . $file);
            }
        }
        closedir($handle);
    }
}
$size = 0;
$num = 0;
dirsize('.');
printf ("Siden fylder: %0.2f MB.<br />", $size/(1024*1024));
echo "Siden bestå af ialt: $num Filer";
?>
Avatar billede detox Nybegynder
12. februar 2005 - 15:38 #11
Bare husk at sætte:

$size = 0;
$num = 0;

inden du kalder:

dirsize()
Avatar billede jakobdo Ekspert
12. februar 2005 - 15:44 #12
jakoba:
Det er da ikke kun i Windows mapper du finder . og ..!
Avatar billede mpj_86 Nybegynder
12. februar 2005 - 15:45 #13
detox: Det virker perfekt...

Smid lige et svar...
Avatar billede detox Nybegynder
12. februar 2005 - 15:48 #14
Værsgo'
Avatar billede detox Nybegynder
12. februar 2005 - 15:50 #15
Lidt finpudset:

<?
function dirsize($dir) {
    global $size, $num;
    if( substr($dir,-1,1) != '/' ) $dir .= '/';
    if($handle = opendir($dir)) {
        while(($file = readdir($handle)) !== false ) {
            if( $file != '.' && $file != '..' ) {
                if( is_dir($dir . $file) ) {
                    dirsize($dir . $file . '/' );
                } else {
                    $num++;
                    $size += filesize($dir . $file);
                }
            }
        }
        closedir($handle);
    }
}
$size = 0;
$num = 0;
dirsize('.');
printf("Siden fylder: %0.2f MB.<br />", $size/(1024*1024));
printf("Siden bestå af ialt: %u Filer", $num);
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester