Jump to content
Sign in to follow this  
maxior

Szukam pomysłu, sposobu na skrypt zapełnienia serwerów.

Recommended Posts

Cześć, szukam skryptu który pozwoli mi zapisywać zapełnienie moich serwerów.

Serwery mam w bazie a liczba graczy zapisywana jest w 2 kolumnach "players" i "maxplayer"

Więc wiem jak wyliczyć procentowo zapełnienie serwerów.

Dane w bazie aktualizują się cronem.

Problem pojawia się gdy mam zrobić wykresy, nie mam pomysłu jak to zorganizować aby zapisywać co godzinę a potem zrobić z tego wykres dzienny i tygodniowy.

Mam nadzieję że ktoś mi pomoże.

 

Edited by maxior

Share this post


Link to post

Dwie tabele:

`servers`
| id_server | max_players | create_date |
|-----------+-------------+-------------|




`server_logs`
| id_log | id_server | players | date |
|--------+-----------+---------+------|

Teraz co godzinę CRONem odpalasz skrypt, który zapisuje aktualną liczbę graczy oraz datę (+ informację, którego serwera dane te dotyczą na daną chwilę) do tabeli server_logs. id_server w tej tabeli jest kluczem obcym do tabeli servers z kluczem podstawowym o tej samej nazwie.

 

Teraz, żeby generować sobie wykresy z tych danych, potrzebowałbyś napisać dwa zapytania SQL (w zasadzie, to dwie metody, jeżeli mówimy już o stricte programowaniu) ze zmiennymi, pobierające dane z danego dnia i danego tygodnia dla konkretnego serwera. Wszystko to powinieneś zamknąć w obiekcie i zwrócić w postaci JSON (patrz dokumentacja). Resztę zrobi już za Ciebie "plugin".

  • Like 2

Share this post


Link to post

@Salva

Źle się określiłem chcę zrobić średnie zapełnienie wszystkich moich serwerów a nie każdego z osobna.

Skoro w bazie mam już zapisywane dane o ilości graczy i max slotów to nie lepiej wykonać to zapytanie do zmiennej i zapisać do bazy?

SELECT SUM(players) / SUM(maxplayers)*100 FROM `servery`

Czyli jak rozumiem mam zapisać zmienną "zapełnienie" do bazy wraz z datą.

Tylko czy data w jednej kolumnie pozwoli aby wyświetlać dzienne i tygodniowe wykresy?

Share this post


Link to post

Średnie zapełnienie wszystkich serwerów? To źle troszkę te zapytanie jest ułożone, bo nie liczy tego co ma liczyć.

Musisz troszkę edytować to zapytanie, na takie np.:

SELECT ROUND((SUM(`players`) / SUM(`maxplayers`)) * 100) avg FROM `servery`;

Teraz wynik będziesz mieć dostępny pod avg. Tutaj manual użytej funkcji: https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round

 

No datę potrzebujesz do wykresów. Skoro będziesz mieć nowy wpis co godzinę, to później jesteś w stanie zapytaniami wyciągnąć sobie dane z danego dnia, tygodnia, miesiąca czy roku.

  • Like 2

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Create a New Account. It’s free and easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
×
×
  • Create New...