WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

recurse_dirsize() WP MU

Рекурсивно получает размер директории в байтах. Т.е. можно указать родительскую папку и получить полные её размер: включая вложенные папки.

Является основой для однотипной функции get_dirsize(), которая кэширует результат.

Функция определена только в мультисайтовой установке WordPress. Поэтому чтобы функция работала в обычной установке, нужно подключить файл:

require_once ABSPATH . WPINC .'/ms-functions.php';
Является основой для: get_dirsize()

Хуков нет.

Возвращает

Число/false. Размер в байтах. Если директории не существует то вернет fales.

Использование

recurse_dirsize( $directory, $exclude );
$directory(строка) (обязательный)
Полный путь до каталога (папки).
$exclude(строка)
Полный путь до вложенных папок, размер которых не нужно учитывать.
По умолчанию: null

Примеры

#1 Получим полный размер каталога загрузок uploads

$upload_dir = (object) wp_upload_dir();

// подключим файл функции
require_once ABSPATH . WPINC .'/ms-functions.php';

$mb = recurse_dirsize( $upload_dir->basedir );

echo number_format( $mb / (1024*1024), 1 ) .' MB'; // выведет: 74.5 MB

Код recurse dirsize: wp-includes/ms-functions.php VER 5.1.1

<?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;
}

Cвязанные функции

Из метки: Файловая система (files dirs folders создание удаление директорий файлов)

Еще из раздела: Мультисайт

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться