disk_total_space

(PHP 4 >= 4.1.0, PHP 5)

disk_total_spaceВозвращает общий размер каталога или раздела файловой системы

Описание

float disk_total_space ( string $directory )

Функция возвращает общий размер в байтах указанного раздела диска или каталога.

Список параметров

directory

Директория файловой системы или раздел диска.

Возвращаемые значения

Возвращает общий размер в байтах в виде вещественного числа или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования disk_total_space()

<?php
// $df содержит общий размер диска "/" в байтах
$ds disk_total_space("/");

// Под Windows:
$ds disk_total_space("C:");
$ds disk_total_space("D:");
?>

Примечания

Замечание: Эта функция неприменима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Смотрите также

  • disk_free_space() - Возвращает размер доступного пространства в каталоге или в файловой системе

Коментарии

To find the total size of a file/directory you have to differ two situations:
(on Linux/Unix based systems only!?)

you are interested:
1) in the total size of the files in the dir/subdirs
2) what place on the disk your dir/subdirs/files uses

- 1) and 2) normaly differs, depending on the size of the inodes
- mostly 2) is greater than 1) (in the order of any kB)
- filesize($file) gives 1)
- "du -ab $file" gives 2)

so you have to choose your situation!

on my server I have no rights to use "exec du" in the case of 2), so I use:
  $s = stat($file);
  $size = $s[11]*$s[12]/8);
whitch is counting the inodes [12] times the size of them in Bits [11]

hopes this helps to count the used disk place in a right way... :-)

                     Andreas Dick
2002-06-11 18:15:37
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
Автор:
"filesystem or disk partition" does not equal "directory" for Windows.  Thanks.
2007-01-30 21:11:21
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
function roundsize($size){
    $i=0;
    $iec = array("B", "Kb", "Mb", "Gb", "Tb");
    while (($size/1024)>1) {
        $size=$size/1024;
        $i++;}
    return(round($size,1)." ".$iec[$i]);}
2007-06-24 22:03:53
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
For a non-looping way to add symbols to a number of bytes:
<?php
function getSymbolByQuantity($bytes) {
   
$symbols = array('B''KiB''MiB''GiB''TiB''PiB''EiB''ZiB''YiB');
   
$exp floor(log($bytes)/log(1024));

    return 
sprintf('%.2f '.$symbol[$exp], ($bytes/pow(1024floor($exp))));
}
2007-06-25 06:13:26
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
Автор:
Beware of empty files!

<?php

   
// Wrong
   
$exp floor(log($bytes) / log(1024));

   
//Correct
   
$exp $bytes floor(log($bytes) / log(1024)) : 0;

?>
2008-02-04 03:04:10
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
Something that might go well with this function is the ability to list available disks. On Windows, here's the relevant code:

<?php
/**
 * Finds a list of disk drives on the server.
 * @return array The array velues are the existing disks.
 */
function get_disks(){
    if(
php_uname('s')=='Windows NT'){
       
// windows
       
$disks=`fsutil fsinfo drives`;
       
$disks=str_word_count($disks,1);
        if(
$disks[0]!='Drives')return '';
        unset(
$disks[0]);
        foreach(
$disks as $key=>$disk)$disks[$key]=$disk.':\\';
        return 
$disks;
    }else{
       
// unix
       
$data=`mount`;
       
$data=explode(' ',$data);
       
$disks=array();
        foreach(
$data as $token)if(substr($token,0,5)=='/dev/')$disks[]=$token;
        return 
$disks;
    }
}
?>

EXAMPLE OF USE:
<?php print_r(get_disks()); ?>

EXAMPLE RESULT:
Array
(
    [1] => A:\
    [2] => C:\
    [3] => D:\
    [4] => E:\
    [5] => F:\
    [6] => G:\
    [7] => H:\
    [8] => I:\
    [9] => M:\
    [10] => X:\
    [11] => Z:\
)

Warning: This also finds empty disk drives (eg; CD or SMD drives or the more common floppy drive).

Warning2: If you want to find space usage using the info from my function, prepend the disk function with the "@", eg:

$free=@disk_free_space('A:\\');
2009-12-25 08:52:24
http://php5.kiev.ua/manual/ru/function.disk-total-space.html
<?php

//This is  a more readable way of viewing the returned float

// $Bytes contains the total number of bytes on "/"
$Bytes = disk_total_space("/");

function dataSize($Bytes)
{
$Type=array("", "kilo", "mega", "giga", "tera");
$counter=0;
while(
$Bytes>=1024)
{
$Bytes/=1024;
$counter++;
}
return(
"".$Bytes." ".$Type[$counter]."bytes");
}
?>
2014-01-29 23:06:48
http://php5.kiev.ua/manual/ru/function.disk-total-space.html

    Поддержать сайт на родительском проекте КГБ