递归获取目录的大小。

原型

recurse_dirsize( string $directory, string $exclude = null )

描述

get_dirsize()用于在包含其他目录时获取目录的大小。

参数

$directory (string) (Required) 目录的完整路径。

$exclude (string) (Optional)  要从总计中排除的子目录的完整路径。

返回值

(int|false)  如果是有效目录,则以MB为单位。如果没有,则为假。

源文件

路径:wp-includes/ms-functions.php

<?php
...
function recurse_dirsize( $directory, $exclude = null ) {
	$size = 0;
	$directory = untrailingslashit( $directory );
	if ( ! file_exists( $directory ) || ! is_dir( $directory ) || ! is_readable( $directory ) || $directory === $exclude ) {
		return false;
	}
	if ($handle = opendir($directory)) {
		while(($file = readdir($handle)) !== false) {
			$path = $directory.'/'.$file;
			if ($file != '.' && $file != '..') {
				if (is_file($path)) {
					$size += filesize($path);
				} elseif (is_dir($path)) {
					$handlesize = recurse_dirsize( $path, $exclude );
					if ($handlesize > 0)
						$size += $handlesize;
				}
			}
		}
		closedir($handle);
	}
	return $size;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/recurse_dirsize/