Avatar billede haolan Nybegynder
17. januar 2006 - 10:24 Der er 4 kommentarer og
1 løsning

Ledig plads

Jeg har fundet det nedenstående et sted her på eksperten:

<?
$maxsize = 2048;
$userid = 10;
function dir_size($dir) {
    $totalsize = 0;
    if ($dirstream = @opendir($dir)) {
        while (false !== ($filename = readdir($dirstream))) {
            if ($filename != "." && $filename != "..")
            {
                if (is_file($dir."/".$filename))
                    $totalsize+=filesize($dir."/".$filename);

                if (is_dir($dir."/".$filename))
                    $totalsize+=dir_size($dir."/".$filename);
            }
        }
    }
    closedir($dirstream);
    return $totalsize;
}
function fsize($s) {
        $a = array("B", "KB", "MB", "GB", "TB", "PB");
        $pos = 0;
        while ($s >= 1024) {
            $s /= 1024;
            $pos++;
        }
        return round($s,2)." ".$a[$pos];
}
$dir = "/var/www/vivaa.dk/din/uploads/$userid";
echo "Din mappe fylder: ";
$size = dir_size($dir);
echo fsize(dir_size($dir));
$space = $maxsize-$size;
echo "<br>Du har $space ledig";
?>

Jeg har rettet lidt i det for at få vist ledig plads.
Den totalte plads er angivet med $maxsize = 2048, hvilket betyder at man har 2048KB tilgængelig.

Så skal den undersøge hvor meget man har liggende i mappen i forvejen og så trække det fra $maxsize, så man derved får svar på hvor meget ledig plads man har tilbage.
jeg har forsægt at angive det som i kan se ved $space. Men det virker ikke ordentligt..

Nogen der kan løse det?
Avatar billede stalle Nybegynder
17. januar 2006 - 11:29 #1
du sammenligner KB med B
Filesize giver en værdi i bytes, altså vil jeg mene at du også skal angive maxsize i bytes.
Avatar billede haolan Nybegynder
17. januar 2006 - 15:20 #2
Den udskriver:
Din mappe fylder: 2.17 KB
Du har 2221 ledig

Hvilket ikke rigtig hænger sammen.
Man har max 2048KB til rådighed.. og der er brugt 2.17KB
Det vil sige at man bør have 2045,83KB tilbage
Avatar billede stalle Nybegynder
17. januar 2006 - 17:51 #3
Yes, og det samme gælder.

$maxsize er angivet i KiloBytes
$size er Bytes
Det scriptet viser dig, er resultatet af fsize(dir_size($dir))

Skulle scriptet give et bare nogenlunde korrekt resultat, skulle du skrive:
$space = $maxsize - fsize(dir_size($dir))

Jeg vil dog anbefale dig og lave det således:

$maxsize = 2097152;


$space = $maxsize - $size;
echo "<br>Du har $space ledig";
Avatar billede haolan Nybegynder
17. januar 2006 - 18:01 #4
Kan man ikke udskrive værdien på sammen måde som $size der udskrives i KB?
Avatar billede stalle Nybegynder
17. januar 2006 - 18:15 #5
jo - fornemmer det er copy paste :D

echo "<br>Du har ". fsize($space)." ledig";
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