Another easy way to convert bytes to human readable sizes would be this:
<?php
function HumanSize($Bytes)
{
$Type=array("", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta");
$Index=0;
while($Bytes>=1024)
{
$Bytes/=1024;
$Index++;
}
return("".$Bytes." ".$Type[$Index]."bytes");
}
?>
It simply takes the $Bytes and divides it by 1024 bytes untill it's no longer over or equal to 1024, meanwhile it increases the $Index to allocate which suffix belongs to the return (adding 'bytes' to the end to save some space).
You can easily modify it so it's shorter, but I made it so it's more clearer.
Nitrogen.
disk_free_space
(PHP 4 >= 4.1.0, PHP 5)
disk_free_space — Gibt verfügbaren Platz auf Dateisystem oder Partition zurück
Beschreibung
$directory
)Wird eine Zeichenkette, die einen Verzeichnispfad enthält übergeben, wird diese Funktion, die Anzahl verfügbarer (freier) Bytes auf dem entsprechenden Dateisystem oder der Platten-Partition zurückgeben.
Parameter-Liste
-
directory -
Ein Verzeichnis des Dateisystemes oder der Platten-Partition.
Hinweis:
Wird ein Dateiname anstatt eines Verzeichnisses übergeben, ist das Verhalten der Funktion unspezifiziert und kann sich zwischen Betriebssystemen und PHP Versionen unerscheiden.
Rückgabewerte
Gibt der die Anzahl der freien Bytes als Gleitkommazahl (float) zurück.
Im Fehlerfall wird FALSE zurückgegeben..
Beispiele
Beispiel #1 disk_free_space() Beispiel
<?php
// $df enthält die Anzahl freier Bytes auf "/"
$df = disk_free_space("/");
// Unter Windows:
$df_c = disk_free_space("C:");
$df_d = disk_free_space("D:");
?>
Anmerkungen
Hinweis: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss.
Siehe auch
- disk_total_space() - Gibt die Gesamtgröße eines Dateisystemes oder einer Partition zurück
disk_free_space
11-Jan-2007 02:50
04-Dec-2006 12:33
This the right function is:
function formatSize($size){
switch (true){
case ($size > 1099511627776):
$size /= 1099511627776;
$suffix = 'TB';
break;
case ($size > 1073741824):
$size /= 1073741824;
$suffix = 'GB';
break;
case ($size > 1048576):
$size /= 1048576;
$suffix = 'MB';
break;
case ($size > 1024):
$size /= 1024;
$suffix = 'KB';
break;
default:
$suffix = 'B';
}
return round($size, 2).$suffix;
}
12-Jul-2006 04:13
List all drives, free space, total space and percentage free.
<?
for ($i = 67; $i <= 90; $i++)
{
$drive = chr($i);
if (is_dir($drive.':'))
{
$freespace = disk_free_space($drive.':');
$total_space = disk_total_space($drive.':');
$percentage_free = $freespace ? round($freespace / $total_space, 2) * 100 : 0;
echo $drive.': '.to_readble_size($freespace).' / '.to_readble_size($total_space).' ['.$percentage_free.'%]<br />';
}
}
function to_readble_size($size)
{
switch (true)
{
case ($size > 1000000000000):
$size /= 1000000000000;
$suffix = 'TB';
break;
case ($size > 1000000000):
$size /= 1000000000;
$suffix = 'GB';
break;
case ($size > 1000000):
$size /= 1000000;
$suffix = 'MB';
break;
case ($size > 1000):
$size /= 1000;
$suffix = 'KB';
break;
default:
$suffix = 'B';
}
return round($size, 2).$suffix;
}
?>
02-Mar-2005 05:38
and also you can know the used space , in this
example :
<?
function disk_used_space($drive)
{
return disk_total_space("$drive:") - disk_free_space("$drive:");
}
echo disk_used_space('C');
?>
16-Oct-2004 02:49
To make human readable file sizes, see this function:
http://aidanlister.com/repos/v/function.size_readable.php