首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 遞歸統計目錄文件總大小函數實現

     編輯:PHP 相關知識

核心函數

遞歸遍歷目錄,累加文件大小,返回 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;
}
?>

您可能感興趣的文章:

  • PHP 統計文件大小,以 GB、MB、KB、B 輸出
  • PHP 實現統計郵件大小的方法
  • PHP 獲取文件大小的方法
  • PHP 文件大小格式化函數合集
  • PHP 遍歷目錄並返回統計目錄大小
  • PHP 統計目錄大小的自定義函數分享
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved