Функция на PHP для определения размера каталога 


Функция на PHP для определения размера каталога

Опубликовано

 

Функция на PHP определяет размер указанного каталога, включая все подкаталоги в байтах.

 

<?php
function DirSize($path){
  /*
  $path - полный путь к директории
  */

  $returnSize=0;

  //Функция opendir возвращает список с содержимым указанного каталога.
  if (!$h = @opendir($path)) return false;

  /*
  В цикле при помощи функции readdir последовательно
  обрабатываем каждый элементы каталога.
  */
  while (($element = readdir($h)) !== false) {

    //Исключаем директории "." и ".."
    if ($element<>"." and $element<>".."){

      //Полний путь к обрабатываемому элементу(файл/папка)
      $all_path = $path."/".$element;

      /*
      Если текущий элемент - файл, определяем его размер
      с помощью filesize() и суммируем его к переменой $returnSize
      */
      if (@filetype($all_path)=="file"){
        $returnSize+=filesize($all_path);

      /*
      Если текущий элемент - каталог, функция вызывает саму себя,
      результат суммируется к переменой $returnSize
      */
      }elseif (@filetype($all_path)=="dir"){
        @$returnSize+=DirSize($all_path);
      }

    }
  }

  closedir($h);
  return $returnSize;
}
?>

Вызов функции, в качестве единственного параметра нужно указать полный путь до каталога:

print DirSize("Полный путь до каталога");