|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 02 Mar 2001 11:23:56 To : djusha@infotel.kg Subject : Re: calculation of a size of the directory -------------------------------------------------------------------------------- Здравствуй, Andrej Kartashov. В твоём письме от Thu, 1 Mar 2001 18:09:11 +0000 (UTC) написано: dik>>> Hужно перлом вычислить полный размер файлов в каталоге, dik>>> ******************************************* dik>>> while(defined($file= <${DATADIR}/_qry/*>)){ dik>>> $catSize += -s $file} dik>>> ******************************************* dik>>> Этот код работает но если файлов в каталоге очень много то жуткие dik>>> тормоза... некрасиво получается... dik>> А можно подробнее? Если честно слаб еще здесь... >> opendir(DIR,"${DATADIR}/_qry"); >> while (my $filename = readdir(DIR)) { >> $catSize += -s "${DATADIR}/_qry/$filename"; >> } >> closedir(DIR); dik> Вобщем уже понял, разобрался... Все равно $catSize += -s dik> тормозит... кэш то здоровый, за сутки более 10 мег получается... В смысле - 10 миллионов файлов? Размер их роли не играет. dik> Эксперементирую с 100 мег Особенно тормоза заметны под W2K, dik> Идея то была чтобы размер проверялся при каждом заходе юзера на главную dik> страницу базы данных... Теперь вижу что глупо это все, Глупее не бывает, я бы сказал. dik> будем искать альтернативу. Крона, говоришь, нету? Тогда пишется cgi, который дергается из крона на той машине, на которой он есть. Или не cgi, и тогда дергается не по HTTP, а по телнету. Или ... вариантов масса. dik>> Hужно переодически удалять кэш базы данных. Она сама это делать не умеет. dik>> Крона нет. Вот хотелось бы автоматизировать процесс... Причем не хотелось dik>> бы тупо удалять все файлы по времени а удалять их если размер кэша больше dik>> чем указано.... и удалять не все файлы а только те, которые старше чем dik>> указано... собственно все работает но на диких тормозах... >> А куда тебе торопиться? Я бы удалял просто по времени, все, что старше >> некоторого момента (тогда алгоритм будет однопроходным). dik> Так наверное и будет, или по времени или, к примеру по каждому 100/1000 dik> клику юзера... dik> Кстати, есть вариант для Linux, dik> system("du -s $dir"); dik> Только что то здесь я встал в тупик dik> Каким образом перепенной $size передать размер полученный от system("du -s dik> $dir") ? dik> что то на подобии dik> $size = system("du -s $dir"); dik> Hо это работает не совсем корректно :-) Это работает корректно. Только возвращает не то, что ты имел в виду. $size = `du -s $dir`; $size =~ s/\D.*//; Hо это не будет принципиально быстрее... -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- ifmail v.2.15dev5 * Origin: NTV Internet (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16483a6aed6b8.html, оценка из 5, голосов 10
|