Размер 80К файлов в 800 папках

skeptic
На сайте с 06.09.2006
Offline
53
779

Есть необходимость перебрать ~80 000 файлов в ~800 папках чтобы определить общее количество этих файлов и общий занимаемый объём. Для перебора используется следующая функция:

function ac_WalkDir($D,&$Dirs,&$Files,&$Size,$Del)

{ $r=opendir($D);
while($a=readdir($r))
{ if(($a=='.')||($a=='..')||($a=='.htaccess'))continue;
if(is_dir($a=$D.'/'.$a))
{ ac_WalkDir($a,$Dirs,$Files,$Size,$Del);
if($Del)rmdir($a);else++$Dirs;
}
if(is_file($a))
{ if($Del)unlink($a);
else
{ ++$Files;
$Size+=filesize($a);
}
}
}
closedir($r);
}

Скажите не повесит ли данная операция нормальный виртуальный хост и сколько примерно может занимать по времени? Если есть какие-то другие, менее ресурсоёмкие способы выполнить задачу - поделитесь пожалста..

Dreammaker
На сайте с 20.04.2006
Offline
570
#1

думаю здесь лучше вызывать системные команды

для размера папки с файлами (я так понимаю будет одна и в ней вложенные)

можно глянуть вот:

http://www.opennet.ru/openforum/vsluhforumID1/47775.html

А для количества файлов думаю, тоже что-то найдётся.

p.s. Повесить может и не повесит (хотя большая вероятность), но скорее всего процесс буде отрублен системой по таймауту.

Shtogrin
На сайте с 02.11.2006
Offline
95
#2

К-во файлов в PATH (f - регулярные файлы)

find PATH -type f | wc -l

К-во каталогов в PATH (d - каталоги)

find PATH -type d | wc -l

Общий размер (h - human -readable, т.е. Mb, Gb)

du -sh PATH

Будет максимально быстро, но нужен shell. Или запустить через system().

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
skeptic
На сайте с 06.09.2006
Offline
53
#3
p.s. Повесить может и не повесит (хотя большая вероятность), но скорее всего процесс буде отрублен системой по таймауту.

На домашнем компе (далеко не сервере) пересчёт около 500К файлов в 25К папок этой функцией занимает около 5 секунд

За советы спасибо - будем эксперементировать

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий