Модератор: Модераторы разделов
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT
Сообщение
gcc » 25.03.2009 05:06
как можно ускорить скрипт без многопоточности?
в принципе можно и многопоточность, но Jail ставить отдельный, не хочется для него...
тут возможно сделать 20 детей, а количество хэша разделаить на 20?
Код: Выделить всё
#!/usr/bin/perl
use LWP::Simple;
# use Proc::Fork;
my $spam = get("http://www.stopforumspam.com/downloads/bannedips.csv");
my $hash;
$hash->{$1} ++ while $spam =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;
system("ipfw table 1 flush");
my $parent=$$;
my $child=fork();
if($$ == $parent){
print "Parent: pid=$$;($parent)\n";
} else {
kill("TERM",$parent); # убиваем родителя
#system("kill -9 $parent");
while( my $key = each %$hash){
system("ipfw table 1 add $key");
}
kill("TERM",$$);
exit; # на всякий случай
}
exit; # на всякий случай
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 26.03.2009 11:24
Код: Выделить всё
$hash->{$1} ++ while $spam =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;
вынос мозга :)
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT
Сообщение
gcc » 26.03.2009 14:29
если убрать:
то он медленно ищет, а с этой строкой почти файл мегабайт меньше за секунду по-моиму....
в данном скрипте ipfw медленно добавляет очень, если сделать больше чилдренов, то load averages больше 10, и точно не знаю корректно ли оно добавило, но наверное не проблема, можно раз в стуки запускать скрипт... помогает...
alfss
Сообщения: 262
Сообщение
alfss » 26.03.2009 19:33
выкинь ipfw
открой для себя pf и таблицы