PHP 8.4.0 RC4 available for testing

disk_total_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

disk_total_spaceBir disk bölümünün veya dosya sisteminin toplam boyutunu döndürür

Açıklama

disk_total_space(string $dizin): float|false

Belirtilen dizinin bulunduğu dosya sistemi veya disk bölümünün toplam boyunu bayt cinsinden döndürür.

Bağımsız Değişkenler

dizin

Bir dosya sisteminin veya disk bölümünün bir dizini.

Dönen Değerler

Hata durumunda false yoksa toplam bayt sayısını bir gerçek sayı olarak döndürür.

Örnekler

Örnek 1 - disk_total_space() örneği

<?php
// $df kök dizin altındaki toplam bayt sayısını içerir
$df = disk_total_space("/");

// Windows üzerinde:
$df = disk_total_space("C:");
$df = disk_total_space("D:");
?>

Notlar

Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

Ayrıca Bakınız

  • disk_free_space() - Disk bölümü veya dosya sistemindeki kullanılabilir alanı döndürür

add a note

User Contributed Notes 7 notes

up
9
Viitala
16 years ago
Beware of empty files!

<?php

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

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

?>
up
8
tularis at php dot net
17 years ago
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(1024, floor($exp))));
}
up
3
andudi at gmx dot ch
22 years ago
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
up
2
JulieC
17 years ago
"filesystem or disk partition" does not equal "directory" for Windows. Thanks.
up
2
stierguy1 at msn dot com
17 years ago
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]);}
up
0
cotact[at]covac-software[dot]com
14 years ago
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:\\');
up
-3
ryan at designedbyrayn dot co dot uk
10 years ago
<?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");
}
?>
To Top