[PHP] Jak policzyć objętość plików w katalogu i podkatalogach?
Chcesz policzyć ile zajmują pliki w wybranym katalogu łącznie z podkatalogami.
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ę.