phpで指定したディレクトリ内のファイルサイズを取得方法が


紹介されていたのでメモひらめき電球


【PHP TIPS】 54. 再帰関数を使ってみよう


//PHP4の場合、scandir関数がないので実装しておきます。
if (!function_exists(scandir
)) {
function
scandir($dir_name, $order = ''
) {
$dh = opendir($dir_name
);
while ( (
$filename = readdir($dh)) !== false
) {
$file_list[] = $filename
;
}

if (
$order
) {
rsort($file_list
);
} else {
sort($file_list
);
}
return
$file_list
;
}
}

//引数 $pathにはディレクトリ、またはファイルの絶対パスを指定。
function getDirSize($path
) {
$total_size = 0
;

//指定したのがファイルだった場合はサイズを返して終了。
if (is_file($path
)) {
return
filesize($path
);

} elseif (
is_dir($path
)) {
$basename = basename($path
);

//カレントディレクトリと上位ディレクトリを指している場合はここで終了。
if ($basename == '.' || $basename == '..'
) {
return
0
;
}

//ディレクトリ内のファイル一覧を入手。
$file_list = scandir($path
);

foreach (
$file_list as $file
) {
//ディレクトリ内の各ファイルを引数にして、自分自身を呼び出す。
$total_size += getDirSize($path .'/'. $file
);
}
return
$total_size
;

} else {
return
0
;
}
}


//関数を実行。
echo getDirsize('/home/asial');