遞歸遍歷目錄,累加文件大小,返回 MB 單位:
<?php
function dirsize($dir) {
$dh = @opendir($dir);
$size = 0;
while ($file = @readdir($dh)) {
if ($file != "." && $file != "..") {
$path = $dir . "/" . $file;
if (is_dir($path)) {
$size += dirsize($path);
} elseif (is_file($path)) {
$size += filesize($path);
}
}
}
@closedir($dh);
return $size;
}
// 使用示例
$dir_path = "./my_files";
$dir_size = dirsize($dir_path);
echo round($dir_size / 1024 / 1024, 2) . " MB";
?>
<?php
$dirName = "phpMyAdmin";
$dir = opendir($dirName);
while ($fileName = readdir($dir)) {
$file = $dirName . "/" . $fileName;
if ($fileName != "." && $fileName != "..") {
if (is_dir($file)) {
echo "<font color='red'>$fileName === " . date("Y-m-d H:i:s", filectime($file)) . " == " . filetype($file) . " == " . toSize(dirSize($file)) . "</font><br/>";
} else {
echo "<font color='green'>$fileName ===== " . date("Y-m-d H:i:s", filectime($file)) . " ==== " . filetype($file) . " ==== " . toSize(filesize($file)) . "</font><br/>";
}
}
}
closedir($dir);
function toSize($size) {
if ($size > pow(2,30)) { $dw = "GB"; $size = round($size/pow(2,30),2); }
elseif ($size > pow(2,20)) { $dw = "MB"; $size = round($size/pow(2,20),2); }
elseif ($size > pow(2,10)) { $dw = "KB"; $size = round($size/pow(2,10),2); }
else { $dw = "bytes"; }
return $size . $dw;
}
function dirSize($dirName) {
$dirsize = 0;
$dir = opendir($dirName);
while ($fileName = readdir($dir)) {
$file = $dirName . "/" . $fileName;
if ($fileName != "." && $fileName != "..") {
if (is_dir($file)) $dirsize += dirSize($file);
else $dirsize += filesize($file);
}
}
closedir($dir);
return $dirsize;
}
?>