PHP mappa méretének meghatározása+ kiterjesztés


 Üdv.
Van egy kódom amit itt találtam át kéne úgy átalakítani hogy kiírja azt hogy 3,2 MB a mappa mérete most csak ennyit ír: 3079377
itt a kód:
<?php function get_dirsize($dirname) { $dirsize = 0; if($dir = @opendir($dirname)) { while($file = readdir($dir)) { if($file != "." && $file != "..") { if(is_dir($dirname . "/" . $file)) $dirsize += get_dirsize($dirname . "/" . $file); else $dirsize += filesize($dirname . "/" . $file); } } closedir($dir); } return $dirsize; } echo get_dirsize("."); ?>
Meg ha lehetne akkor egy olyan kód bele ami jelzi azt ha 20Gb-ot megközelíti a mappa mérete (pirosan írja ki a mappa méretét)
Megoldható ez?
Előre is köszönöm |
1. Át kellene.....
Gondolkodtál azon, hogy miért azt írja ki?
Segítségül: Ha 1 fájl 1 bájt méretű, a lemezen hány bájtot foglal el?
Tehát vagy minden fájlméretet kerekítesza tárolási egységre, akkor meár csak 1024-el és 1024-el kell osztanod és már MB-ba is van.
--
2.
Igen.....
echo get_dirsize(".");
helyett
$x=get_dirsize("."); if ($x>IttAzASzámAmiMárKözelítéstJelent) { echo "<span AFormátumod>". $x."</span>; } else { echo $x; }
|
Van egy ilyen méretezés amit találtam ezt hova tegyem bele a kódodba?
'B' => 1, 'KB' => 1024, 'MB' => 1024 * 1024, 'GB' => 1024 * 1024 * 1024, 'TB' => 1024 * 1024 * 1024 * 1024, 'PB' => 1024 * 1024 * 1024 * 1024 * 1024,
|
$bajt="B"; if ($meret>=1024) { $meret/=1024; $bajt="KB"; if ($meret>=1024) { $meret/=1024; $bajt="MB"; if ($meret>=1024) { $meret/=1024; $bajt="GB"; } } } printf("%.2f ",$meret); print " ".$bajt;
bár lehet máshogy is csak gyorsba bemásoltam amit még régen írtam
a kiíratás módja miatt nem kacagni |
Ha minden igaz:
$meret=array("B","KB","MB","GB",TB","PB");
$x=get_dirsize("."); for($i=count($meret);$i>=0;$i--) { if ($x>pow(1024,$i)) { $meret=round($x/pow(1024,$i-1),1)." ".$meret[$i]; } } if ($x>1800000) { echo "<span AFormátumod>". $meret."</span>; } else { echo $meret; }
|
Lemaradt 1-2 " jel:
$meret=array("B","KB","MB","GB","TB","PB");
$x=get_dirsize("."); for($i=count($meret);$i>=0;$i--) { if ($x>pow(1024,$i)) { $meret=round($x/pow(1024,$i-1),1)." ".$meret[$i]; } } if ($x>1800000) { echo "<span AFormátumod>". $meret."</span>"; } else { echo $meret; }
De most valami 3x akkora számot ír ki : 3153613824 3 |
$meret=array("B","KB","MB","GB","TB","PB");
$x=get_dirsize("."); for($i=count($meret);$i>=0;$i--) { if ($x>pow(1024,$i)) { $meret=round($x/pow(1024,$i),1)." ".$meret[$i]; break; } } if ($x>1800000) { echo "<span AFormátumod>". $meret."</span>"; } else { echo $meret; }
1800000 helyére írd be a te számod ami után figyelemztessen, a "AFormátumod" helyére meg tegyél egy formázást, ahogy kinézzen |
Az a 1800000 az hány Mb? 1,8 Mb ?
Amúgy jó a kód működik |
Az 1,8MB az 1,8*1024*1024 bájt.
|
|