PHP计算文件夹总文件大小

或许指定的一个文件的全部文件的累计大小。

<?php
function getDirSize($dir) {
    $handle = opendir ( $dir );
    while ( false !== ($FolderOrFile = readdir ( $handle )) ) {
        if ($FolderOrFile != "." && $FolderOrFile != "..") {
            if (is_dir ( "$dir/$FolderOrFile" )) {
                $sizeResult += getDirSize ( "$dir/$FolderOrFile" );
            } else {
                $sizeResult += filesize ( "$dir/$FolderOrFile" );
            }
        }
    }
    closedir ( $handle );
    return $sizeResult;
}

// 单位自动转换函数
function getRealSize($size) {
    $kb = 1024; // Kilobyte
    $mb = 1024 * $kb; // Megabyte
    $gb = 1024 * $mb; // Gigabyte
    $tb = 1024 * $gb; // Terabyte

    if ($size < $kb) {
        return $size . " B";
    } else if ($size < $mb) {
        return round ( $size / $kb, 2 ) . " KB";
    } else if ($size < $gb) {
        return round ( $size / $mb, 2 ) . " MB";
    } else if ($size < $tb) {
        return round ( $size / $gb, 2 ) . " GB";
    } else {
        return round ( $size / $tb, 2 ) . " TB";
    }
}
?>

使用:

<?php
echo getRealSize ( getDirSize ( dirname ( $_SERVER ['SCRIPT_FILENAME'] )  ) );
?>

Leave a Reply

(will not be published)