to give a user the size of his account (or the admin the size of the users
folder)
in a more human readable format, you can use this PHP function.
it will scan the directory recursively and return the value in
kilobytes, megabytes
so its easier to read.
“human readable size” makes use of the built-in PHP functions
is_dir( ),
opendir( ),
readdir( ),
is_link( ),
is_file( ),
filesize( ),
closedir( ) and
round( ).
01 <?php
02
03 // get filesize recursively
04 function dirsize($directory)
05 {
06 if (!is_dir($directory)) return -1;
07 $size = 0;
08 if ($DIR = opendir($directory))
09 {
10 while (($dirfile = readdir($DIR)) !== false)
11 {
12 if (is_link($directory . '/' . $dirfile) || $dirfile == '.' || $dirfile == '..')
13 continue;
14 if (is_file($directory . '/' . $dirfile))
15 $size += filesize($directory . '/' . $dirfile);
16 else if (is_dir($directory . '/' . $dirfile))
17 {
18 $dirSize = dirsize($directory . '/' . $dirfile);
19 if ($dirSize >= 0) $size += $dirSize;
20 else return -1;
21 }
22 }
23 closedir($DIR);
24 }
25 return $size;
26 }
27
28 // format size to human readable values
29 function format_size($rawSize)
30 {
31 if ($rawSize / 1048576 > 1)
32 return round($rawSize/1048576, 1) . 'MB';
33 else if ($rawSize / 1024 > 1)
34 return round($rawSize/1024, 1) . 'KB';
35 else
36 return round($rawSize, 1) . 'bytes';
37 }
38
39 // specify the folder to scan
40 $dir = '.';
41 $size = dirsize($dir);
42 if ($size < 0)
43 {
44 echo '<p>ERROR - bad path ('.$dir.')</p>';
45 }else{
46 echo '<p>the "'.$dir.'" folder is '.format_size($size).'</p>';
47 }
48
49 ?>