Killing Floor - lokalne statystyki

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

</br>
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Ale jak, kiedy on ma 177MB?
Bazę mam w utf8_general_ci:
Załącznik zrzut ekranu4.jpg nie jest już dostępny
Log udostępnię na stronie za chwilkę.
Załączniki
zrzut ekranu4.jpg
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Dobrze, nie wysyłaj całego loga, podaj tylko przykładowe linie dla

Kod: Zaznacz cały

Shogun, False
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

http://kf.jned.eu/log.txt

Kod: Zaznacz cały

curl -s http://kf.jned.eu/log.txt | grep 'Shotgun False'

Wybacz pomyliłem się z tym rozmiarem.
Ma tylko 17 Mb
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Ma tylko 17 Mb
I dobrze bo już sie martwiłem o I/O i pamieć :)

Cały log dopiero zobrazował mi jak to wygląda. Wklejam poprawiony kf_users.awk

Kod: Zaznacz cały

$1 ~ /^[[:digit:]]/ {
connb[$2]= $3; nickb[$2]=$2;}
$2 ~ /New/ && $3 ~ /Player/ {
 if (start) { 
  znalazl=0;
  {for (x in conn) {
    sub(/[\'\"]/, "", $4)
    if ( x == $4) {
      znalazl=1;
      conn[x]++; break
      }  
    }}
   {if (znalazl == 0) {
      sub(/[\'\"]/, "", $4)
      conn[$4]= 1; id[$4]= substr($5, 4); nick[$4]=$4;}}
       } else {
      start=1;
      sub(/[\'\"]/, "", $4)
      conn[$4] = 1; id[$4]= substr($5, 4); nick[$4]=$4
      }}
END {  
  tabela="nazwatabeli";        //config
  for (l in conn) {
    if (!nickb[l]) {
      insert_tb="INSERT INTO "tabela "(id, player, connections) VALUES ("id[l]", '"nick[l]"', "conn[l]")"
    print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""insert_tb"\"" | "/bin/bash"
  } else {
    if (conn[l] > connb[l]) {
      update_tb= "UPDATE "tabela" SET connections="conn[l]" WHERE player='"nick[l]"'"
      print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""update_tb"\"" | "/bin/bash"
    }
  }
}
}

Zrob na bazie

Kod: Zaznacz cały

TRUNCATE tabela 
(wyczyść zawartość tabeli) podegraj te zmiany do kf_users.awk i wykonaj.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Załącznik zrzut ekranu5.jpg nie jest już dostępny

Kod: Zaznacz cały

$~ ./kf_users.sh
id      int(10) NO              NULL
player  char(40)        NO              NULL
connections     int(11) NO              NULL
/bin/bash: line 89: nieoczekiwany EOF podczas poszukiwania pasującego ``'
/bin/bash: line 156: błąd składni: nieoczekiwany koniec pliku
Niesamowite. Nie wiem jak mam dziękować!
Załączniki
zrzut ekranu5.jpg
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Chwilka, jeszcze jakieś byki są, poczekaj, sprawdzę.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Po wykonaniu skryptu np:3x okazuje się że dodawane są wpisy już wcześniej dodane zamiast je pomijać, zliczając w pole "connections" tylko te które występują jako nowe.
Załącznik zrzut ekranu6.jpg nie jest już dostępny
Załączniki
zrzut ekranu6.jpg
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Kod: Zaznacz cały

$1 ~ /^[[:digit:]]/ {
connb[$2]= $3; nickb[$2]=$2;}
$2 ~ /New/ && $3 ~ /Player/ {
 if (start) { 
  znalazl=0;
  {for (x in conn) {
    sub(/[\'\"\`]/, "", $4)
    if ( x == $4) {
      znalazl=1;
      conn[x]++; break
      }  
    }}
   {if (znalazl == 0) {
      sub(/[\'\"\`]/, "", $4)
      conn[$4]= 1; id[$4]= substr($5, 4); nick[$4]=$4;}}
       } else {
      start=1;
      sub(/[\'\"\`]/, "", $4)
      conn[$4] = 1; id[$4]= substr($5, 4); nick[$4]=$4
      }}
END {  
  tabela="nazwatabeli";        //config
  for (l in conn) {
    if (!nickb[l]) {
      insert_tb="INSERT INTO "tabela "(id, player, connections) VALUES ("id[l]", '"nick[l]"', "conn[l]")"
    print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""insert_tb"\"" | "/bin/bash"
  } else {
    if (conn[l] > connb[l]) {
      update_tb= "UPDATE "tabela" SET connections="conn[l]" WHERE player='"nick[l]"'"
      print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""update_tb"\"" | "/bin/bash"
    }
  }
}
}

Jeszcze raz kf_users.awk poprawiony. Podmień, wyczyść tabele i uruchom skrypt.

Dodane:
Czekaj jeszcze, byki są.

Kod: Zaznacz cały

$1 ~ /^[[:digit:]]/ {
connb[$2]= $3; nickb[$2]=$2;}
$2 ~ /New/ && $3 ~ /Player/ {
 if (start) { 
  znalazl=0;
  {for (x in conn) {
    sub(/[\'\"\`\\\$]/, "", $4)
    if ( x == $4) {
      znalazl=1;
      conn[x]++; break
      }  
    }}
   {if (znalazl == 0) {
      sub(/[\'\"\`\\\$]/, "", $4)
      conn[$4]= 1; id[$4]= substr($5, 4); nick[$4]=$4;}}
       } else {
      start=1;
      sub(/[\'\"\`\\\$]/, "", $4)
      conn[$4] = 1; id[$4]= substr($5, 4); nick[$4]=$4
      }}
END {  
  tabela="nazwatabeli";        //config
  for (l in conn) {
    if (!nickb[l]) {
      insert_tb="INSERT INTO "tabela "(id, player, connections) VALUES ("id[l]", '"nick[l]"', "conn[l]")"
    print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""insert_tb"\"" | "/bin/bash"
  } else {
    if (conn[l] > connb[l]) {
      update_tb= "UPDATE "tabela" SET connections="conn[l]" WHERE player='"nick[l]"'"
      print "mysql -u uzytkownik -h localhost --password=twojehaslo produkty -Bse \""update_tb"\"" | "/bin/bash"
    }
  }
}
}


Jeszcze raz kf_users.awk poprawiony. Podmień, wyczyść tabelę i uruchom skrypt. Twoi kochani gracze, używają bardzo brzydkich nazw, cała zabawa polega na wycinaniu niedozwolonych znaków. Teraz wszystko działa i powinno być poprawnie. Sprawdź.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Działa wszystko ok tyle że jak wyżej nie zlicza tyko duplikuje wpisy.

Konsola też już błędu nie zwraca.
ODPOWIEDZ