[PHP] Jak policzyć objętość plików w katalogu i podkatalogach?

0x01 graphic

Chcesz policzyć ile zajmują pliki w wybranym katalogu łącznie z podkatalogami.

0x01 graphic

To bardzo przydatna funkcja rekurencyjna, która pozwoli Ci policzyć ile miejsca zajmują pliki w wybranym katalogu, a jeżeli katalog zawiera podkatalogi, to także są one doliczane do ogólnej wartości podanej w bajtach.

<?

function policz($sciezka) {

if (!is_dir($sciezka)) return 0;

$katalog = opendir($sciezka);

while ($plik = readdir($katalog)) {

if (($plik<>".")&&($plik<>"..")) {

$f = "$sciezka/$plik";

if (is_dir($f)) $wielkosc+=policz($f);

else $wielkosc+=filesize($f);

}

}

closedir($katalog);

return $wielkosc;

}

$wielkosc = policz("/katalog");

echo "Katalog zajmuje $wielkosc bajtów";

?>

Do funkcji policz() przekazywana jest nazwa katalogu, którego objętość ma zostać policzona. Funkcja pobiera katalog i sprawdza czy kolejny element katalogu to plik czy podkatalog.

Jeżeli jest to katalog, funkcja wywołuje samą siebie rekurencyjnie z nazwą podkatalogu. Jeżeli elementem katalogu jest plik, wielkości plików są sumowane i zwracane przez funkcję.