Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[apache-talk] Re[2]: [apache-talk] Сжатие Гео-базы для mod_ geo.
Здравствуйте Alex,
14 августа 2004 г., 16:55:43, Вы писали:
>> У меня есть гео-база c неперескающимися интервалами ip-адресов в виде
>> двух 4-х байтных чисел и кода страны. Я её сконвертил в вид:
>> xx.xx.xx.xx\xx . Я брал каждый интервал и спомощью Net::Netmask на
>> перле конвертировал в 1 или несколько записей вида xx.xx.xx.xx\xx .
>> Размер файла получился 2 мега с копейками или около 100тыс. записей.
>>
>> Вопрос: как мне этот файл уменьшить, ведь сейчас в нём много
>> избыточных данных, которые можно объединить. Есть готовое решение, а
>> то mod_geo раздувает процессы Апача до 20 мегов?
Если речь идет об агрегации префиксов, то можно использовать такой
перловый скрипт:
#!/usr/bin/perl
use Net::CIDR::Lite;
use strict;
use warnings;
my $cidr = Net::CIDR::Lite->new;
while (<>) {
chomp;
$cidr->add($_);
}
my @cidr_list = $cidr->list;
my $string = join "\n",@cidr_list;
print $string,"\n";
список в виде
62.5.128.0/17
62.16.64.0/19
62.16.96.0/19
62.33.0.0/16
читается со stdin и в stdout выводится сжатый список.
--
С Уважением,
Антон Валерьевич Южанинов.
|