PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

disk_total_space> <dirname
Last updated: Fri, 01 Aug 2008

view this page in

disk_free_space

(PHP 4 >= 4.0.7, PHP 5)

disk_free_spaceReturns available space in directory

Descrierea

float disk_free_space ( string $directory )

Given a string containing a directory, this function will return the number of bytes available on the corresponding filesystem or disk partition.

Parametri

directory

A directory of the filesystem or disk partition.

Notă: Given a file name instead of a directory, the behaviour of the function is unspecified and may differ between operating systems and PHP versions.

Valorile întroarse

Returns the number of available bytes as a float.

Exemple

Example #1 disk_free_space() example

<?php
// $df contains the number of bytes available on "/"
$df disk_free_space("/");

// On Windows:
disk_free_space("C:");
disk_free_space("D:");
?>

Note

Notă: Această funcţie nu va lucra cu fişiere la distanţă, deoarece fişierul care trebuie să fie examinat trebuie să fie accesibil prin intermediul sistemului de fişiere al serverului.

Vedeţi de asemenea



disk_total_space> <dirname
Last updated: Fri, 01 Aug 2008
 
add a note add a note User Contributed Notes
disk_free_space
rostvertol dot mil at gmail dot com
19-Feb-2008 03: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] );
}
?>
root at mantoru dot de
07-Dec-2007 12:25
Note that disk_free_space() does an open_basedir check.
Nitrogen
11-Jan-2007 09: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.
mixar at yandex dot ru
04-Dec-2006 07: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;
}
djneoform at gmail dot com
12-Jul-2006 10: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;
    }
?>
Ashraf M Kaabi
02-Mar-2005 12: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');
?>
aidan at php dot net
16-Oct-2004 08:49
To make human readable file sizes, see this function:

http://aidanlister.com/repos/v/function.size_readable.php

disk_total_space> <dirname
Last updated: Fri, 01 Aug 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites