Получение размера папки

Рецепт №81. Из книги «128 рецептов php»
Перейти к оглавлению

Еще одним не маловажным рецептом для работы с папками является получение размера папки, со всеми вложенными файлами и подпапками. Для реализации данного примера, хорошо подходит возможность создания рекурсивных функций. При вызове такой функции происходит проверка всех вложенных файлов – определяется их размер. В случае, когда попадается вложенная папка – подпапка, осуществляется рекурсивный вызов функции, которая перебирает файлы уже во вложенной подпапке.

Пример:

// указываем путь до папки или файла 
$dirname = '/folder/'; 
// заносим в переменную размер папки или файла
$size = dir_size($dirname); 
echo $formSize;

// функция для просмотра всех подпапок 
// и всех вложенных файлов
function dir_size($dirname) {
  $totalsize = 0; // общий размер
  // открываем папку
  if ($dirstream = @opendir($dirname)) {
    // перебираем все что находится внутри папки
	  while(($filename = readdir($dirstream))!==false){
	    if ($filename != "." && $filename != ".."){
		// если попался файл
		if (is_file($dirname . "/" . $filename)){
		  $totalsize += filesize($dirname . "/" . $filename);
		}	  
		// если попалась папка
		if(is_dir($dirname . "/" . $filename)){
		  $totalsize += dir_size($dirname . "/" . $filename);
		}
	   }
	 }
  }
  // закрываем папку
  closedir($dirstream);
  // возвращаем результат
  return $totalsize;
}

В результате выполнения приведенного выше скрипта, мы получим размер папки в байтах. Чтобы сделать красивый, форматированный вывод размера – перевести в Кб, Мб и тд, можно воспользоваться функцией, которая была описана в рецепте «Размер файла. Перевод байт в КБ, Мб и тд».

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*