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 *

5 × one =

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

You May Also Like

Calculate folder and subfolders size with PHP

How to read the size of a directory using PHP? Here is a simple function which could help read the size of the directory, number of directories and the number of files in the given directory.

Pico – Flat-File CMS

Pico is an open source CMS application that is capable of very few things. It uses flat-files as the database and built with PHP. Simply, there is no setup and the app works instantly.