Как узнать размер папки со всеми подпапками Автор adminОпубликовано 10.02.2013

Как узнать размер папки со всеми подпапками

Как узнать размер папки со всеми подпапками
Как-то я столкнулся с проблемой, нужно было узнать, сколько места на хостинге занимает моя папка с картинками. Проблема была в том, что в папке много подпапок и очень много картинок. Место на хостинге ограниченное и пришлось писать скрипт, который бы запускался раз в сутки и чистил старые файлы, если размер папки с картинками превышал допустимый размер. Как-нибудь я опишу весь этот скрипт, но сейчас, я выложу только ту часть, которая отвечает за получение размера папки.

Исходник:

<?php
    $dirname = '/folder/'; // указываем полный путь до папки или файла
    $size = dir_size($dirname); //заносим в переменную размер папки или файла
    $formSize = format_size($size); //форматируем вывод
    echo $formSize;
    // функция для просмотра всех подпапок и всех вложенных файлов
    function dir_size($dirname) {
        $totalsize=0;
        if ($dirstream = @opendir($dirname)) {
        while (false !== ($filename = readdir($dirstream))) {
            if ($filename!="." && $filename!="..")
            {
                if (is_file($dirname."/".$filename))
                $totalsize+=filesize($dirname."/".$filename);
     
                if (is_dir($dirname."/".$filename))
                $totalsize+=dir_size($dirname."/".$filename);
                }
            }
        }
        closedir($dirstream);
        return $totalsize;
    }
    // функция форматирует вывод размера
    function format_size($size){
         $metrics[0] = 'байт';
         $metrics[1] = 'Кбайт';
         $metrics[2] = 'Мбайт';
         $metrics[3] = 'Гбайт';
         $metrics[4] = 'Тбайт';
         $metric = 0;        
         while(floor($size/1024) > 0){
             ++$metric;
             $size /= 1024;
         }       
         $ret round($size,1)." ".(isset($metrics[$metric])?$metrics[$metric]:'??');
        return $ret;
    }
?>

Рассказать друзьям:

Оценить:

(Пока оценок нет)

Как узнать размер папки со всеми подпапками: 6 комментариев

  1. Чтобы посмотреть размеры файлов и папок в корне сайте используя функции автора этой заметки, можно воспользоваться кодом:


    $dirnameRoot = $_SERVER['DOCUMENT_ROOT'];

    if ($dirstream = @opendir($dirnameRoot)) {
    while (false !== ($filename = readdir($dirstream))) {
    if ($filename != «.» && $filename != «..») {
    if (is_dir($dirnameRoot . «/» . $filename)) {
    echo sprintf(‘%s %s’, «/» . $filename, format_size(dir_size($dirnameRoot . «/» . $filename))) . »;
    }


    if (is_file($dirnameRoot . "/" . $filename))
    echo sprintf('%s %s', "/" . $filename, format_size(filesize($dirnameRoot . "/" . $filename))) . '';
    }
    }
    }
    closedir($dirstream);

  2. Ну и сколько будет этот скрипт считать 10000 папок и лимон картинок?