Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: calculation of a size of the directory   Andrej Kartashov   01 Mar 2001 22:09:11 
 Re: calculation of a size of the directory   Dmitriy MiksIr   02 Mar 2001 02:24:59 
 Re: calculation of a size of the directory   Artem Chuprina   02 Mar 2001 11:23:56 
Архивное /ru.perl/16483a6aed6b8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional