Skocz do zawartości
Pecetowicz Forum komputerowe

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


Rekomendowane odpowiedzi

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.

Edytowane przez maxior
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

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".

  • Lubię to! 2
Odnośnik do odpowiedzi
Udostępnij na innych stronach

@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?

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Ś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.

  • Lubię to! 2
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...