Nice, but please be aware of the prefixes.
SI specifies a lower case 'k' as 1'000 prefix.
It doesn't make sense to use an upper case 'K' as binary prefix,
while the decimal Mega (M and following) prefixes in SI are uppercase.
Furthermore, there are REAL binary prefixes since a few years.
Do it the (newest and recommended) "IEC" way:
KB's are calculated decimal; power of 10 (1000 bytes each)
KiB's are calculated binary; power of 2 (1024 bytes each).
The same goes for MB, MiB and so on...
Feel free to read:
http://en.wikipedia.org/wiki/Binary_prefix
disk_free_space
(PHP 4 >= 4.1.0, PHP 5)
disk_free_space — Retorna o espaço disponível no diretório
Descrição
Dado uma string contendo um diretório, esta função retornará o numero de bytes disponíveis no sistema de arquivos ou partição de disco.
Parâmetros
- directory
-
Um diretório do sistema de arquivo ou partição de disco.
Nota: Dado um nome de arquivo ao invés de um diretório, o comportamento da função não é especificado a pode diferir entre sistemas operacionais e versões do PHP.
Valor Retornado
Retorna o número de bytes disponíveis como um float.
Exemplos
Exemplo #1 Exemplo da disk_free_space()
<?php
// $df contém o número de bytes disponível em "/"
$df = disk_free_space("/");
?>
Notas
Nota: Esta função não trabalha com arquivos remotos, de forma que o arquivo a ser examinado precisa ser acessível pelo sistema de arquivos do servidor.
disk_free_space
17-Dec-2008 09:52
18-Feb-2008 07:27
A cleaner and more efficient way of making human readable file sizes:
<?php
function decodeSize( $bytes )
{
$types = array( 'B', 'KB', 'MB', 'GB', 'TB' );
for( $i = 0; $bytes >= 1024 && $i < ( count( $types ) -1 ); $bytes /= 1024, $i++ );
return( round( $bytes, 2 ) . " " . $types[$i] );
}
?>
11-Jan-2007 01:50
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.
04-Dec-2006 11: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 02: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 04: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 12:49
To make human readable file sizes, see this function:
http://aidanlister.com/repos/v/function.size_readable.php
