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

get_dirsize() WP 3.0.0

Получает размер директории в байтах. Результат кэшируется во временные опции: get_transient().

Вспомогательная функция, которая используется для проверки есть ли у блога в MU сборке доступное место в каталоге uploads.

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

require_once ABSPATH . WPINC .'/ms-functions.php';
Работает на основе: recurse_dirsize()

Хуков нет.

Возвращает

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

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

get_dirsize( $directory, $max_execution_time );
$directory(строка) (обязательный)
Полный путь до каталога (папки).
$max_execution_time(число)
Максимальное время выполнения в секундах. Время считается начиная от глобальной точки отсчета (когда WP только начал загружаться - константа WP_START_TIMESTAMP).
По умолчанию: null - ini_get( 'max_execution_time' )

Примеры

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

$upload_dir = wp_upload_dir();

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

$mb = get_dirsize( $upload_dir['basedir'] );

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

Список изменений

С версии 3.0.0 Введена.
С версии 5.2.0 $max_execution_time parameter added.

Код get dirsize: wp-includes/functions.php WP 5.3

<?php
function get_dirsize( $directory, $max_execution_time = null ) {
	$dirsize = get_transient( 'dirsize_cache' );

	if ( is_array( $dirsize ) && isset( $dirsize[ $directory ]['size'] ) ) {
		return $dirsize[ $directory ]['size'];
	}

	if ( ! is_array( $dirsize ) ) {
		$dirsize = array();
	}

	// Exclude individual site directories from the total when checking the main site of a network
	// as they are subdirectories and should not be counted.
	if ( is_multisite() && is_main_site() ) {
		$dirsize[ $directory ]['size'] = recurse_dirsize( $directory, $directory . '/sites', $max_execution_time );
	} else {
		$dirsize[ $directory ]['size'] = recurse_dirsize( $directory, null, $max_execution_time );
	}

	set_transient( 'dirsize_cache', $dirsize, HOUR_IN_SECONDS );
	return $dirsize[ $directory ]['size'];
}

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

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

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

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