//объявляем функцию, которая принимает один параметр - путь к папке
function dir_size($dir) {
//в эту переменную будем накапливать размеры всех найденных файлов
$totalsize=0;
//открываем папку
if ($dirstream = @opendir($dir)) {
//перебираем все найденные файлы и папки
while (false !== ($filename = readdir($dirstream))) {
// если это не сама папка и не её родитель
if ($filename!="." && $filename!=".."){
//если это файл - накапливаем его размер
if (is_file($dir."/".$filename)) $totalsize+=filesize($dir."/".$filename);
//если это папка - уходим в рекурсию и накапливаем её результат
if (is_dir($dir."/".$filename)) $totalsize+=dir_size($dir."/".$filename);
}
}
}
//закрываем папку
closedir($dirstream);
//возвращаем накопленное значение размеров
return $totalsize;
}
function sizeofdir($dir) {
$dir = realpath($dir);
$fileSPLObjects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
$dirs = 0;
$files = 0;
$dirsize = 0;
foreach( $fileSPLObjects as $fullFileName => $fileSPLObject ) {
if ($fileSPLObject->isDir()) {
$dirs++;
} elseif ($fileSPLObject->isFile()) {
$files++;
$dirsize += $fileSPLObject->getSize();
}
}
return $dirs . ' - Dir(s) , Total: ' . $files . ' file(s) , ' . file_size($dirsize);
}
function file_size($size)
{
$filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 Bytes';
}