ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
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 выводится сжатый список.

-- 
 С Уважением,
 Антон Валерьевич Южанинов.



 




Copyright © Lexa Software, 1996-2009.