<?php
function Yget_dir_size($dir, $debug=false){
if (!is_dir($dir)) return false;
if (!preg_match("`/$`", $dir)) $dir .= '/';
$get_size = 0;
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if (substr($entry, 0, 1) == '.') continue;
if (is_file($dir . $entry)) {
$get_size += filesize($dir . $entry);
if ($debug == true) echo $dir . $entry . ' ' . filesize($dir . $entry) . "<br>n";
}
else if (is_dir($dir . $entry)){
$get_size += Yget_dir_size($dir . $entry, $debug);
}
else{
continue;
}
}
$d->close();
return $get_size;
}
$dir = '용량체크하고픈 디렉토리경로(상대경로 or 절대경로)';
echo Yget_dir_size($dir, true);//개별파일출력을 원할 경우
echo Yget_dir_size($dir);//개별파일출력을 원하지 않을경우
?>
몇가지 첨언을 하자면
Yget_dir_size 이함수는 재귀호출 함수입니다.
해당디렉토리에 다른 디렉토리를 발견하면 자기 자신을 다시 호출합니다.
이함수는 해당 디렉토리를 웹서버가 읽을 수 있을 경우에만 제대로 작동합니다.
--------------------------------------------------------------------------------------------------
지나가다가 슬쩍...
function get_dirsizea($file_dir) {
$size = 0;
$d = dir($file_dir);
while ($entry = $d->read()) {
if ($entry != "." && $entry != "..") $size += filesize("$file_dir/$entry");
}
$d->close();
return $size;
}
출처 : http://www.welog.net/gbbs/bbs/board.php?bo_table=php&wr_id=18