Функция GET_DIRSIZE() в WordPress: работа с размером директории

# Функция GET_DIRSIZE() в WordPress

Функция GET_DIRSIZE() используется для определения размера директории в байтах. Результат кэшируется в виде временной опции или объекта.

Кэш хранится в get_transient( 'dirsize_cache' ) в виде массива, индексированного по имени папки.

Эта функция служит вспомогательным инструментом, который в основном применяется для проверки, превысил ли блог на многофункциональном сайте разрешенное пространство для загрузки.

**Важно:** Функция определена только для установки WordPress Multisite. Чтобы использовать её на одном сайте, необходимо включить следующий файл:

```php
require_once ABSPATH . WPINC .'/ms-functions.php';

Использует

Функция ссылается на recurse_dirsize() для вычисления размера директории.

Хуки

Эта функция не имеет хуков.

Возврат значения

Функция возвращает:

  • int|false|null: размер директории в байтах. Возвращает false, если директория не существует.

Использование функции

get_dirsize( $directory, $max_execution_time );
  • $directory (строка, обязательно): Полный путь к директории, размер которой нужно узнать.
  • $max_execution_time (целое число, опционально): Максимальное время выполнения функции в секундах. Остановка будет определяться глобально, с момента начала загрузки WordPress. По умолчанию — null.

Примеры использования

Пример 1: Получение полного размера директории загрузок

$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.

Код функции GET_DIRSIZE()

function get_dirsize( $directory, $max_execution_time = null ) {

    /*
     * Исключаем директории отдельных сайтов из общего размера, 
     * когда проверяем основной сайт сети, так как они являются
     * подсистемами и не должны учитываться.
     */
    if ( is_multisite() && is_main_site() ) {
        $size = recurse_dirsize( $directory, $directory . '/sites', $max_execution_time );
    } else {
        $size = recurse_dirsize( $directory, null, $max_execution_time );
    }

    return $size;
}

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

Функции для работы с файловой системой:

  • copy_dir()
  • list_files()
  • recurse_dirsize()
  • unzip_file()
  • wp_delete_file()
  • wp_delete_file_from_directory()
  • WP_Filesystem()
  • WP_Filesystem_Direct()
  • wp_mkdir_p()
  • wp_tempnam()

Функции для работы с многофункциональными сайтами:

  • get_blog_details()
  • get_current_blog_id()
  • get_id_from_blogname()
  • get_main_site_id()
  • get_site_meta()
  • get_sites()
  • grant_super_admin()
  • is_blog_admin()
  • is_main_site()
  • is_multisite()
  • is_network_admin()
  • is_user_admin()
  • network_admin_url()
  • network_home_url()
  • restore_current_blog()
  • switch_to_blog()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *