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)