Here a PHP Class that calculates the size, number of files & folders of a specific directory.

< ?php class Directory_Calculator { var $size_in; var $decimals; function calculate_whole_directory($directory) { if ($handle = opendir($directory)) { $size = 0; $folders = 0; $files = 0; while (false !== ($file = readdir($handle))) { if ($file != “.” && $file != “..”) { if(is_dir($directory.$file)) { $array = $this->calculate_whole_directory($directory.$file.’/’);
$size += $array[‘size’];
$files += $array[‘files’];
$folders += $array[‘folders’];
}
else
{
$size += filesize($directory.$file);
$files++;
}
}
}
closedir($handle);
}

$folders++;

return array(‘size’ => $size, ‘files’ => $files, ‘folders’ => $folders);
}

function size_calculator($size_in_bytes)
{
if($this->size_in == ‘B’)
{
$size = $size_in_bytes;
}
elseif($this->size_in == ‘KB’)
{
$size = (($size_in_bytes / 1024));
}
elseif($this->size_in == ‘MB’)
{
$size = (($size_in_bytes / 1024) / 1024);
}
elseif($this->size_in == ‘GB’)
{
$size = (($size_in_bytes / 1024) / 1024) / 1024;
}

$size = round($size, $this->decimals);

return $size;
}

function size($directory)
{
$array = $this->calculate_whole_directory($directory);
$bytes = $array[‘size’];
$size = $this->size_calculator($bytes);
$files = $array[‘files’];
$folders = $array[‘folders’] – 1; // exclude the main folder

return array(‘size’ => $size,
‘files’ => $files,
‘folders’ => $folders);
}
}
?>

 

Save this bit of code in a file called: directory.class.php

How to use

< ?php include ‘directory.class.php’; /* Path to Directory – IMPORTANT: with ‘/’ at the end */ $directory = ‘/home/mywebsite.com/public_html/’; /* Calculate size in: B (Bytes), KB (Kilobytes), MB (Megabytes), GB (Gigabytes) */ $size_in = ‘MB’; /* Number of decimals to show */ $decimals = 2; $directory_size = new Directory_Calculator; /* Initialize Class */ $directory_size->size_in = $size_in;
$directory_size->decimals = $decimals;

$array = $directory_size->size($directory); // return an array with: size, total files & folders

echo “The directory “.$directory.” has a size of “.$array[‘size’].” “.$size_in.”, “.$array[‘files’].” files & “.$array[‘folders’].” folders.”;
?>

 

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

nine − five =

This site uses Akismet to reduce spam. Learn how your comment data is processed.

You May Also Like

Fast, Effective PHP Compression With .htaccess

PHP compression is an excellent method of conserving bandwidth and reducing client download times. We have already discussed an excellent method for CSS compression, and in this article we share a super-easy technique for compressing all PHP content without editing a single file.