Определить размер каталога

  • Автор темы aka_Kail
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

aka_Kail

Гость
#1
Проблема..
Надо определить размер каталога с вложенными каталогами..
Могу нацарапать функцию с рекурсией, но!!
каталогов много, и возможны вылеты, и в итоге неправильные данные.
Крон подключать - тоже не то...

ф-ция stat() не помогает (она с каталогами не дружит)...

Если кто нить видел скрипт, определяющий размер каталога - киньте линк, плиииз!



PS на сайте NoNaМыча (http://nnm.ru) есть линк на крякнутый PHPED 5 версии! (~50 mb)
Kачать всем!
 
@

@ero

Гость
#2
<?
$size = '';
size_of_dir_num('/home/test1.ru');
// вместо /home/test1.ru - путь к директории размер которой надо узнать
function size_of_dir_num($path)
{

$dir = opendir($path);
global $size;
while($d = readdir($dir))
{
if ($d == '.' || $d == '..') continue;
if (is_file($path.'/'.$d))
{
$size = $size + filesize($path.'/'.$d);
}
else if (is_dir($path.'/'.$d)) size_of_dir_num($path.'/'.$d);
}

}
echo ($size / 1024 / 1024);
echo(' mb');
?>
 
M

MajestiC

Гость
#3
Для: @ero
Читай внимательней, просили без рекурсий.
 
@

@ero

Гость
#4
интересно и как ты здесь без рекурсии хочешь обойтись?
лично я другого решения ни вижу.

если ты боишься за систему то можно задать глубину рекурсии.
вылетов серьезных не будет.
 
M

MajestiC

Гость
#5
Для: @ero
интересно и как ты здесь без рекурсии хочешь обойтись?
лично я другого решения ни вижу.
Не видишь - не пиши.

Человек же написал:
Могу нацарапать функцию с рекурсией, но!!
То есть он ищет возможный вариант решения без рекурсий, именно за ним он и обратился на форум.
 
A

aka_Kail

Гость
#8
Ребят, спасибо, но тот код я и сам мог нацарапать...
а теперь прикиньте - 400 папок, по 5000 фйлов в каждом???

я думаю попробовать через ftp:// - там есть вроде ф-я для определения размера каталога.
вот только... придётся скрипт на крон вешать на другом сайте - локально , наверно ftp не отработает... =(
 
Z

zend

Гость
#9
Если работаем под *NIX, можно попробовать du. Через какойнить popen...
 
A

aka_Kail

Гость
#11
Ага! во! нашёл!
<?
system('du -s /home/www/login/papka');
?>
на вывод - 108 /home/www/login/papka
немного модернизировал - и теперь
<?
system('du -s -h /home/www/login/papka');
?>

на вывод - 108К /home/www/login/papka

то что надо!

ну а уж отделить зёрна от плёвел - плёвое дело :)
Спасибо за пинок в нужную сторону..
Думаю тему можно закрыть.
 
Статус
Закрыто для дальнейших ответов.