Размер каталога

Разработка своих веб-приложений и страничек

Размер каталога

Сообщение Rostov114 » 17 май 2008, 03:25

Возможно ли узнать средствами PHP размер n-го каталога.
Функцией disk_total_space() он мне выдает размер винчестера. Даже если я указываю путь к каталогу.
Ось: Всеми любимая Windows XP
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3199
Зарегистрирован: 18 окт 2007, 02:21

Re: Размер каталога

Сообщение Ivantrs » 17 май 2008, 13:35

Функция возвращает размер в байтах указанного раздела диска.

Читай внимательно - размер РАЗДЕЛА (то есть C: D: и т.д.)

Похоже, что размер файлов в папке придется считать самому :)

Код: Выделить всёРазвернуть
$dir = "C:/имя_каталога";
if (is_dir($dir)) {
    $size = 0;
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            $size = $size + filesize($dir."/".$file);
        }
        closedir($dh);
    }
    print "Размер каталога: $size";
}


В данном случае посчитается размер ФАЙЛОВ в указанном катологе, НО без учета всех файлов, находящихся во вложенных папках... :)
Аватара пользователя
Ivantrs
Активный участник
 
Сообщения: 99
Зарегистрирован: 20 апр 2008, 12:08
Откуда: Энгельс
Домен: ivantrs.vfose.ru

Re: Размер каталога

Сообщение Rostov114 » 17 май 2008, 13:40

Ivantrs писал(а):В данном случае посчитается размер ФАЙЛОВ в указанном катологе, НО без учета всех файлов, находящихся во вложенных папках... :)

Спасибо. Но увы мне это не пойдет. Ибо у меня папка а в ней еще некоторое количество папок в которых уж сами файлы и остальные папки лежат.
Ivantrs писал(а):Похоже, что размер файлов в папке придется считать самому :)

Если интерестно то функция перводит из байтов в килобайты, мегобайты и гигобайты.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3199
Зарегистрирован: 18 окт 2007, 02:21

Re: Размер каталога

Сообщение Ivantrs » 17 май 2008, 14:07

Ну, если внутри каталога есть вложенные, то их придется обсчитывать тем же способом...
Аватара пользователя
Ivantrs
Активный участник
 
Сообщения: 99
Зарегистрирован: 20 апр 2008, 12:08
Откуда: Энгельс
Домен: ivantrs.vfose.ru

Re: Размер каталога

Сообщение Ivantrs » 17 май 2008, 16:15

Код: Выделить всёРазвернуть
<html><head>
<title>Размер файлов в каталоге вместе с вложенными</title>
</head><body>
<?php

//Если файлов в каталоге очень много, то скрипт не успевает отработать за дефолтные 30 сек.
ini_set("max_execution_time","60");

//$dir = "С:\\это\\путь\\до\\нужного\\каталога";
$dir="C:\\www";
$result = mysizedir($dir);
print "Размер файлов в каталоге $dir = $result байт.";

function mysizedir($dir){
if (is_dir($dir)) {
   $size = 0;
   if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
         $dirfile = $dir."/".$file;
         if ($file != "." && $file !=".."){
            if(filetype($dirfile) == "dir"){
               $size = $size + mysizedir($dirfile);
            }else{
               $size = $size + filesize($dirfile);
            }
         }
      }
   closedir($dh);
   }
}
return $size;
}

?>

</body></html>


от так вот... :)
Аватара пользователя
Ivantrs
Активный участник
 
Сообщения: 99
Зарегистрирован: 20 апр 2008, 12:08
Откуда: Энгельс
Домен: ivantrs.vfose.ru

Re: Размер каталога

Сообщение Ivantrs » 17 май 2008, 19:50

А вот так работает заметно быстрее :)

Код: Выделить всёРазвернуть
function mysizedir($dir){
if (is_dir($dir)) {
   $size = 0;
   if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
         $dirfile = $dir."/".$file;
         if ($file != "." && $file !=".."){
            if (is_dir($dirfile)){
               $size = $size + mysizedir($dirfile);
            }else{
               $size = $size + filesize($dirfile);
            }
         }
      }
   closedir($dh);
   }
}
return $size;
}


Вот так if (is_dir($dirfile)){ работает быстрее, чем if(filetype($dirfile) == "dir"){
Аватара пользователя
Ivantrs
Активный участник
 
Сообщения: 99
Зарегистрирован: 20 апр 2008, 12:08
Откуда: Энгельс
Домен: ivantrs.vfose.ru

Re: Размер каталога

Сообщение zk » 18 май 2008, 17:11

Это же стандартная задача, и она естественно описана в каментах к мануалу по PHP, http://php.hsdn.org/filesize
zk
Администратор
 
Сообщения: 1971
Зарегистрирован: 02 сен 2007, 16:04
Домен: vfose.ru

Re: Размер каталога

Сообщение Ivantrs » 18 май 2008, 22:51

Конечно, готовых решений полно...
Но иногда нужно собственными мозгами шевелить, чтобы не зачерствели... :)

(в готовые решения не подглядывал, честно :) )
Аватара пользователя
Ivantrs
Активный участник
 
Сообщения: 99
Зарегистрирован: 20 апр 2008, 12:08
Откуда: Энгельс
Домен: ivantrs.vfose.ru

Re: Размер каталога

Сообщение Rostov114 » 19 май 2008, 18:45

zk писал(а):Это же стандартная задача, и она естественно описана в каментах к мануалу по PHP, http://php.hsdn.org/filesize

:Search: Для себя там ничего не нашел.

Ivantrs огромное спасибо.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3199
Зарегистрирован: 18 окт 2007, 02:21

Re: Размер каталога

Сообщение zk » 19 май 2008, 19:34

Rostov114 писал(а):Для себя там ничего не нашел.

Плохо смотрел, в этом комменте: http://php.hsdn.org/manual/ru/function. ... .php#60259 (Recursive function, which returns size of folder or file.)
zk
Администратор
 
Сообщения: 1971
Зарегистрирован: 02 сен 2007, 16:04
Домен: vfose.ru

След.

Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2