Jak pobrać rozmiar pliku lub katalogu z podkatalogami?

<?
  function get_size( $path )
  {
      $size = 0;
      if (is_dir($path)) 
      {
          if ($dh = opendir($path)) 
          {
              while (($file = readdir($dh)) !== false) 
              {
                  if ($file != '.' && $file != '..')
                  {
                      if (is_dir($path.$file))
                      {
                          $size+= get_size($path.$file.'/');
                      }
                      else
                      {
                          $size+= filesize($path.$file);
                      }
                  }
              }
              closedir($dh);
          }
          return $size;
      }
      else
      {
          return filesize($path);
      }
  }  

  // Użycie:
  
  echo 'Rozmiar wynosi: ' . get_size('./katalog/');

?>
  
FAQ

4 komentarzy

Klamerka otwierająca na początku linii to podstawa - jak ktoś pisze
if (...) {
cos();
niecos();
}
to mnie krew zalewa - koszmar

a klamerki otaczające jedną jedyną instrukcję to cóż... nigdy nie stosowałem, dopiero w Coyote - fakt, że zajmuje więcej - ale imo czytelne

za to spacje w różnych odstępach zamiast tabów to masakra...

Z kojota?
Jeszcze nie wiedziałem co to, a pisałem tak w c++
Klamerki mają tę zaletę, że jak chcę coś dodać to nie muszę najpierw ich dodawać :)

Eee, IMHO tak jest czytelniej, takie koszmarne kodowanie jest wykorzystywane w wielu projektach ;) Poza tym nic sie nie stanie jak bedzie troche wiecej kodu.

uhh... widzę że zastosowałeś koszmarne kodowanie z kojota. bez nadmiarowych klamerek było by dwa razy mniej kodu, a na przejrzystości nic by nie straciło