Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interpretacj logów - jak ?
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


A więc mam logi w takim formacie:

Kod
ip usera || host usera || przegladarka || data godzina || zadany url np. /admin/index.php || refer


I teraz jak np. wyswietlic 10 najczesciej wystepujacych referów lub 10 najpoplarniejszych podstron ?
Z przeglądarką nie ma problemu bo wystarczy liczyc ile razy wystapilo np. Opera i wyliczac jaki to % liczby wszytkich odwiedzin ale tak nie dam rady z referem i podstroną (IMG:http://forum.php.pl/style_emoticons/default/tiredsmiley.gif)

Drugi problem to taki jak wyciagnac rozdzielczosc ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kamson
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 23.10.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. //$log = file_get_contents('log.log');
  3. //$log = ereg_replace("rn","n",$log);
  4. //$linijka = explode("n",$log);
  5.  
  6. $linijka = file('log.log');
  7.  
  8. foreach($linijka as $wers) {
  9. // dzieli linijke na tablice 
  10. $kolumna = explode(' || ',$wers);
  11. // przypisuje elementy tablicy do zmiennych (mozna to wywalić ale musisz wstawiac wtedy $kolumna[0] zamiast $ip itd..) 
  12. list($ip,$host,$przegladarka,$data,$url,$ref) = $kolumna;
  13.  
  14. $stat['ip'][$ip]++;
  15. $stat['host'][$host]++;
  16. $stat['przegladarka'][$przegladarka]++;
  17. $stat['url'][$url]++;
  18. $stat['ref'][$ref]++;
  19. }
  20.  
  21. // funkcja wyświetlająca statystyki konkretnego pola
  22. function showStat($pole,$limit = 10) {
  23. global $stat,$linijka;
  24.  
  25. // sortuje tablice
  26. arsort($stat[$pole]);
  27. // mieli tablice wyciągając klucz ($adres) i wartość ($ile)
  28. foreach($stat[$pole] as $adres => $ile) {
  29. // warunek wprowadzający limit ilości wyświetlanych pozycji (można to wywalić) 
  30. if($i<$limit)
  31. $i++;
  32. else
  33. break;
  34. // wyświetla wynik a przy okazji liczy procentowy udział całości
  35. print $adres.' ('.$ile.') ('.ceil(($ile/count($linijka))*100).'%)<br />';
  36. }
  37. }
  38.  
  39. // w tym miejscu wyświetli wynik!
  40. showStat('ref');
  41. ?>


myślę że foreach to dobre rozwiązanie .. żeby wyciągnąć klucz i wartość musiał bym dać pętle for i funkcje each żeby przemieszczać wskaźnik tablicy. while odpada bo to tablica asocjacyjna i nie ma liczb w kluczach

jeśli chodzi o szybkość to wiadomo ...log długi i zaczyna się problem.
Ja bym to zrobił tak że generowaną tablice $stat zapisywał bym sobie do pliku a przemielony log.log czyścił. Skrypt przy ponownym uruchomieniu wczytywał by sobie tablice i mielił by tylko to co w log.log dodane zostało między uruchomieniami skryptu. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Kamson 4.06.2007, 16:21:54
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 16:16