Function accepts directory path as parameter and returns the total size of it. This function also considers all files and sub-folders of a directory for used space calculation.
Function
function dirSize($dir, $buf = 2) { static $buffer; if (isset($buffer[$dir])) return $buffer[$dir]; if (is_file($dir)) return filesize($dir); if ($dh = opendir($dir)) { $size = 0; while (($file = readdir($dh)) !== false) { if ($file == '.' || $file == '..') continue; $size+=dirsize($dir . '/' . $file, $buf - 1); } closedir($dh); if ($buf > 0) $buffer[$dir] = $size; return $size; } return false; }
Then another function humanReadable() should be called over the result of dirSize Function. This function returns the human readable size of directory.
Function
function humanReadable($Bytes) { $Type = array("", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"); $Index = 0; while ($Bytes >= 1024) { $Bytes/=1024; $Index++; } return("" . $Bytes . " " . $Type[$Index] . "bytes"); }
Calling the function
// Size in bytes $size=dirSize("D:/documents/photos"); // Size in human readable format echo humanReadable($size);
Output
9.96 megabytes
Leave A comment
Email address is optional and will not be published. Only add email address if you want a reply from blog author.
Please fill required fields marked with *