Strona 3 z 4

: 10 lipca 2011, 14:41
autor: DaVidoSS
</br>

: 10 lipca 2011, 14:44
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ę.

: 10 lipca 2011, 14:52
autor: Bastian
Dobrze, nie wysyłaj całego loga, podaj tylko przykładowe linie dla

Kod: Zaznacz cały

Shogun, False

: 10 lipca 2011, 14:59
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

: 10 lipca 2011, 15:22
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.

: 10 lipca 2011, 15:31
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ć!

: 10 lipca 2011, 15:37
autor: Bastian
Chwilka, jeszcze jakieś byki są, poczekaj, sprawdzę.

: 10 lipca 2011, 15:39
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

: 10 lipca 2011, 16:55
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ź.

: 10 lipca 2011, 16:59
autor: DaVidoSS
Działa wszystko ok tyle że jak wyżej nie zlicza tyko duplikuje wpisy.

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