PHP: disk_total_space - Manual

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

search for in the

diskfreespace disk_free_space

Last updated: Sat, 27 Jan 2007

view this page in

# disk_total_space

(PHP 4 >= 4.1.0, PHP 5)

disk_total_space -- Возвращает объем каталога

## Описание

float disk_total_space ( string directory )

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

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

`<?php
// $df содержит размер "/"
$df = disk_total_space("/");
// Под Windows:
disk_total_space("C:");
disk_total_space("D:");
?>`

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

См.также описание функции disk_free_space()

add a note User Contributed Notes
disk_total_space
JulieC
30-Jan-2007 07:11
`"filesystem or disk partition" does not equal "directory" for Windows. Thanks.`
martijn at mo dot com
13-Jan-2007 02:41
`This works for me (on a UNIX server):
<?php
function du( $dir )
{
$res = `du -sk $dir`; // Unix command
preg_match( '/\d+/', $res, $KB ); // Parse result
$MB = round( $KB[0] / 1024, 1 ); // From kilobytes to megabytes
return $MB;
}
$dirSize = du('/path/to/dir/');
?>`
shalless at rubix dot net dot au
16-Jul-2003 07:36
`My first contribution. Trouble is the sum of the byte sizes of the files in your directories is not equal to the amount of disk space consumed, as andudi points out. A 1-byte file occupies 4096 bytes of disk space if the block size is 4096. Couldn't understand why andudi did $s["blksize"]*$s["blocks"]/8. Could only be because $s["blocks"] counts the number of 512-byte disk blocks not the number of $s["blksize"] blocks, so it may as well just be $s["blocks"]*512. Furthermore none of the dirspace suggestions allow for the fact that directories are also files and that they also consume disk space. The following code dskspace addresses all these issues and can also be used to return the disk space consumed by a single non-directory file. It will return much larger numbers than you would have been seeing with any of the other suggestions but I think they are much more realistic:
<?php
function dskspace($dir)
{
$s = stat($dir);
$space = $s["blocks"]*512;
if (is_dir($dir))
{
$dh = opendir($dir);
while (($file = readdir($dh)) !== false)
if ($file != "." and $file != "..")
$space += dskspace($dir."/".$file);
closedir($dh);
}
return $space;
}
?>`
andudi at gmx dot ch
11-Jun-2002 03:15
`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`
kit at 4me dot ru
28-Jun-2001 02:57
`I just did the simple thing -
<?php
function du($dir)
{
$du = popen("/usr/bin/du -sk $dir", "r");
$res = fgets($du, 256);
pclose($du);
$res = explode(" ", $res);
return $res[0];
}
?>`
add a note
diskfreespace disk_free_space

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST