1. 首页
  2. WordPress 函数手册

recurse_dirsize()

recurse_dirsize( string $directory, string|array $exclude = null, int $max_execution_time = null )

递归地获取目录的大小。
Get the size of a directory recursively.

目录锚点:#说明#参数#返回#源码


说明(Description)

当目录包含其他目录时,由get-dirsize()用于获取该目录的大小。


参数(Parameters)

参数 类型 必填 说明
$directory (string) 必需 目录的完整路径。
$exclude (string | array) 可选 要从路径总数或路径数组中排除的子目录的完整路径。应为不带尾随斜杠的。
$max_execution_time (int) 可选 放弃前的最长跑步时间。几秒钟后。超时是全局的,从WordPress开始加载时开始测量。

返回(Return)

(int|false|null)有效目录的字节大小。如果不是,就错了。如果超时,则为空。


源码(Source)

/**
 * Get the size of a directory recursively.
 *
 * Used by get_dirsize() to get a directory's size when it contains
 * other directories.
 *
 * @since MU
 * @since 4.3.0 $exclude parameter added.
 *
 * @param string $directory Full path of a directory.
 * @param string $exclude   Optional. Full path of a subdirectory to exclude from the total.
 * @return int|false Size in MB if a valid directory. False if not.
 */
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;
}
更新版本 源码位置 使用 被使用
MU (3.0.0) wp-includes/functions.php:7500 3 2

recurse_dirsize() 为WP2原创文章,链接:https://www.wp2.cn/functions/recurse_dirsize/

发表评论

您的电子邮箱地址不会被公开。