Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-09-17 15:23:52

  adam05 - Adamin

adam05
Adamin
Skąd: Warszawa
Zarejestrowany: 2005-12-15
Serwis

Najczesciej odwiedzana strona. [ bash ]

Witam

Zastanawiam sie jak najlepiej (najwydajniej) napisac skrypt ktory analizuje na bierzaco plik access.log pod katem adresow IP.
taki pliczek zajmuje okolo 150 MB. Zalezy mi na wydajnosci.
Zaznaczam ze nie chce robic czegos takiego ze wyciagam jeden IP z gory, nastepnie przegladam caly plik access.log, w poszukiwaniu takiego samego IP, i potem z kolejnym IP to samo. Zbyt duzo zasobow by to zjadlo, a skrypt by sie w koncu wykonal po paru godzinyach, jakby mu dobrze poszlo.

Jakbyscie ten problem rozwiazali?
Jakis algorytm?

Z gory dziekuje za wszelkie propozycje.

Z wyrazami Szacunku
adam05


Wszedzie dobrze, ale w 127.0.0.1 najlepiej...

Offline

 

#2  2008-09-17 15:33:19

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Najczesciej odwiedzana strona. [ bash ]

kombinacja sort, uniq i head? może awk?

choć wydaje mi sie, że lepiej by było użyć pythona, perla czy innego "wyższego" języka, powinien być bardziej wydajny (zwłaszcza przy takiej skali)

Ostatnio edytowany przez azhag (2008-09-17 15:36:07)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#3  2008-09-17 15:49:04

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Najczesciej odwiedzana strona. [ bash ]

Zależy też co znaczy "pd kątem danego ip" i "na bieżąco" ....


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#4  2008-09-17 16:05:12

  adam05 - Adamin

adam05
Adamin
Skąd: Warszawa
Zarejestrowany: 2005-12-15
Serwis

Re: Najczesciej odwiedzana strona. [ bash ]

czadman napisał(-a):

Zależy też co znaczy "pd kątem danego ip" i "na bieżąco" ....

Czyli przykładowo w access.log wyskoczy ip 10.0.0.1 i ten hit ma być zaliczony na "konto" 10.0.0.1.
Na końcu skrypt ma przedstawić top 10 adresów IP.


Wszedzie dobrze, ale w 127.0.0.1 najlepiej...

Offline

 

#5  2008-09-17 16:56:52

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Najczesciej odwiedzana strona. [ bash ]

Najlepiej to napisać w czymś co obsługuje tablice asocjacyjne (mapy w C++). Wtedy skrypt/program będzie banalny.


Pozdrawiam, Tomek

Offline

 

#6  2008-09-17 22:59:39

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Najczesciej odwiedzana strona. [ bash ]

Kod:

#!/usr/bin/perl

use strict;
use warnings;

my $file = 'sciezka/do/pliku';
my %ips;

open FILE, '<'.$file or die "Nie można otworzyć $file tylko do odczytu: $!\n";
while (<FILE>) {
        if (/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) {
                my $count = $ips{$1} ? $ips{$1} : 0;
                $ips{$1} = $count + 1 ;
        }
}
close FILE;

#--------------------------------------------------
# http://www.devdaily.com/perl/edu/qanda/plqa00016/
#-------------------------------------------------- 
sub hashValueDescendingNum {
        $ips{$b} <=> $ips{$a};
}

my $i = 0;
foreach my $key (sort hashValueDescendingNum (keys(%ips))) {
        last if ($i++ >= 10);
        print $ips{$key} . " wystąpień adresu ".$key . "\n";
}

Z FAQ-a wynika, że perl czyta plik linia po linii (nie kopiuje go całego do pamięci), więc zużycie zasobów powinno być minimalne niezależnie od wielkości pliku. Ale możesz poobserwować czy tak będzie rzeczywiście (jeżeli jest tam bardzo dużo różnych adresów IP, to jednak może być zauważalnie).

Tak między nami, powinieneś potrafić sam sobie to napisać.

Offline

 

#7  2008-09-17 23:22:17

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Najczesciej odwiedzana strona. [ bash ]

Nie prościej zainstalować gotowe staty. Jest tego mnóstwo.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#8  2008-09-17 23:25:10

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Najczesciej odwiedzana strona. [ bash ]

Prościej :) .

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)