Skocz do zawartości
  • 0

SQL - Licznik


Nieaktywny

Pytanie

No witam witam. Pytanie kieruje głównie do @jahumen @boleknowak @sopher @Libter @Ixidi.

Mam sieć serwerów. Chcę zrobić sidebar z graczami online.

Zatem wymyśliłem, że będę na każdym trybie robił

on join i on quit (quit -1 ,a join +1) do tabeli w SQL i potem bym przesyłał dane do lobby i bym zamienił to na sidebar (do każdego trybu osobny wynik w kolumnie)

Nie znam się zbytnio na SQL tyle co mam sklepik www. Nie mogę też nigdzie znaleźć ogarniętej dokumentacji o SQL w SkQuery.

Ktoś by napisał mi skrypt na podstawie powyższych instrukcji ? W takim sensie, że mam kolumnę a w niej Tabele Serwer1 Serwer2 Serwer3 i w każdym by pisało ilość graczy

w przypadku wyłączenia serwera by się setowało do zera.

Napisałem trochę chaotycznie, ale myślę, że zrozumiale.

Odnośnik do komentarza
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

To można zrobić na dwa sposoby.

Jeden to taki, że każdy z serwerów aktualizuje swój stan w bazie danych co jakiś czas. Powiedzmy co 5 sekund serwer robi nowy rekord w bazie z obecnym czasem, graczami online, graczami online bez ukrytych (vanish), slotami, itd. Wtedy serwer lobby co 5 sekund robi zapytanie do SQL pobierając nowsze rekordy, niż ten który został podany w zapytaniu (a ten masz na podstawie ostatniego rekordu sprzed 5 sekund, gdy robiłeś to samo zapytanie). Wtedy aktualizujesz dane na serwerze.

Inny sposób, używany bodajże w pluginie ServerSigns jest po prostu pingowaniem danego serwera co ileś tam czasu. Na podstawie pingu pobierasz dane jakie odpowiada serwer. Ma to jednak swoje ograniczenia, bo nie wyślesz swoich własnych informacji.

Można to jeszcze zrobić tak, że dzieje się to przez pub/sub, ale Redis... to po prostu zależy od twojej infrastruktury i twoich potrzeb. Każde rozwiązanie ma swoje zalety jak i wady. To też zależy od tego co ewentualnie planujesz w przyszłości; tak aby obecnie wybrane rozwiązanie nie było problematyczne, ba!, było pomocne przy implementowaniu kolejnej nowej funkcji serwer, albo synchronizacji danych między serwerami.

Pozdrawiam Czerwono :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 godzinę temu, TheMolkaPL napisał:

To można zrobić na dwa sposoby.

Jeden to taki, że każdy z serwerów aktualizuje swój stan w bazie danych co jakiś czas. Powiedzmy co 5 sekund serwer robi nowy rekord w bazie z obecnym czasem, graczami online, graczami online bez ukrytych (vanish), slotami, itd. Wtedy serwer lobby co 5 sekund robi zapytanie do SQL pobierając nowsze rekordy, niż ten który został podany w zapytaniu (a ten masz na podstawie ostatniego rekordu sprzed 5 sekund, gdy robiłeś to samo zapytanie). Wtedy aktualizujesz dane na serwerze.

Inny sposób, używany bodajże w pluginie ServerSigns jest po prostu pingowaniem danego serwera co ileś tam czasu. Na podstawie pingu pobierasz dane jakie odpowiada serwer. Ma to jednak swoje ograniczenia, bo nie wyślesz swoich własnych informacji.

Można to jeszcze zrobić tak, że dzieje się to przez pub/sub, ale Redis... to po prostu zależy od twojej infrastruktury i twoich potrzeb. Każde rozwiązanie ma swoje zalety jak i wady. To też zależy od tego co ewentualnie planujesz w przyszłości; tak aby obecnie wybrane rozwiązanie nie było problematyczne, ba!, było pomocne przy implementowaniu kolejnej nowej funkcji serwer, albo synchronizacji danych między serwerami.

Pozdrawiam Czerwono :)

Ale wiesz, że nie pomogłeś ? xD Nie można po prostu przesyłać + i - do SQL i zapisać w postaci wyniku ? przy każdym on join i quit by sie aktualizował SQL.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
50 minut temu, xN0MANDx napisał:

Ale wiesz, że nie pomogłeś ? xD

A jakiej pomocy towarzysz oczekuje?

Tutaj macie dokumentację SkQuery - Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! oraz Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! oraz także Skellett - Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 

 

40 minut temu, xN0MANDx napisał:

Nie można po prostu przesyłać + i - do SQL i zapisać w postaci wyniku ? przy każdym on join i quit by sie aktualizował SQL.

Owszem można, ale nie jest to do końca bezpieczne. Istnieje ryzyko pomyłki, i będzie za dużo, albo za mało względem rzeczywistych danych. No i baza danych powinna raczej gromadzić dane, a nie je ciągle aktualizować. Czyli ciągłe dodawanie i usuwanie powinno być zamienione na model oparty o rekordy, czyli inaczej wpisy.

Widzę, też, że chciałbyś każdy serwer reprezentować w oddzielnej dedykowanej tabeli. Przeciwnie - to co ma tą samą strukturę danych powinno być właśnie w jednej tabeli.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
15 godzin temu, TheMolkaPL napisał:

A jakiej pomocy towarzysz oczekuje?

Tutaj macie dokumentację SkQuery - Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! oraz Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! oraz także Skellett - Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 

 

Owszem można, ale nie jest to do końca bezpieczne. Istnieje ryzyko pomyłki, i będzie za dużo, albo za mało względem rzeczywistych danych. No i baza danych powinna raczej gromadzić dane, a nie je ciągle aktualizować. Czyli ciągłe dodawanie i usuwanie powinno być zamienione na model oparty o rekordy, czyli inaczej wpisy.

Widzę, też, że chciałbyś każdy serwer reprezentować w oddzielnej dedykowanej tabeli. Przeciwnie - to co ma tą samą strukturę danych powinno być właśnie w jednej tabeli.

A może by tak przykład kodu by ktoś podał tak, abym tylko pozmieniał dane do baz danych sql ?

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...