Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gra online - cogodzinna aktualizacja danych
Forum PHP.pl > Forum > PHP
Plikownik
Witam

Zastanawiam się jak zrobić w grze online, aby np. co godzinę zwiększała się ilość złota? Czy wystarczy do tego sam php? Chodzi mi o takie coś co na Vallheru - gdzie zwiększa się energia gracza raz na jakiś czas.
dr_bonzo
CRON
szczegoly na googlu
Plikownik
już gdzieś słyszałem, że trzeba użyć Corn -a, ale Vallheru chyba go nie używa - a nie można zrobić to w ten sposób, że tworzymy klasę obsługi sesji każdego użytkownika i po upływie np. 1 minuty nieruchomości użytkownika na stronie sesja wygasa, a w odpowiedniej tabeli zapisuje się data kiedy po raz ostatni był użytkownik na stronie, potem po zalogowaniu data jest porównywana z datą poprzedniego zalogowana , a odpowiednie dane (np. złoto) zostają odpowiednio uzupełnione na stronie.
Jabol
możesz zrobić skrypt który robi jeden wielki update wszystkim przy każdym wejściu każdego użytkownika (tak jak z logowaniem na forum).
em1X
Ok, tyle, ze jak sie zarejestruje wiecej niz kilkanascie osob to sie zapcha serwer od takich wydajnych metód
Jabol
Czemu? Po prostu za każdym odnowieniem sesji:
  1. UPDATE .... WHERE lastupdate<(NOW()-1h);
Przy dobrym poindeksowaniu i oczywiściej dobrej bazie powinno iść szybciutko.

Możesz też zrobić tak, że update będzie spadał na przypadkowego użytkwnika:
  1. <?php
  2. //...
  3. if(czas_ostatniej_modyfikacji_pliku_semafora()<(teraz()-1h)){
  4. touch("plik_semafor");
  5. zrób_update();
  6. }
  7. //...
  8. ?>
Oczywiście będziesz musiał troszkę pokombinować z ciągami arytmetycznymi i geometryczynymi, bo update możę się dokonywać co godzine, może jednak też co 10h i na to trzeba uważać. Jest to jednak dobry sposób bo nie wymaga żadego rozwiązania po stronie serwera.
Kayne
Vallheru używa Crona.
Wiem, bo sam używam Vallheru winksmiley.jpg
Master Miko
A wiecie jak jest to rozwiązane w grach o częstym odświerzaniu jak Ogame albo inne? Czy to jest np. co 10 sekund crone?
Vogel
rzeczy takie jak ogame robilbym raczej w CLI + DOBRZE przemyslane procedury w bazie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.