Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] update bazy 24h co pare sekund
prz3kus
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

Ostrzeżenie: (0%)
-----


Witam mam pytanie trapiące moją ciekawość, jak w grach online robią przyrost surowców może coś sie dowiem czego nie wiem

Próba 1:
Wrzuciłem wykonywanie skryptu do crontaba jenak ma to wade wykonuje się co minuta niby ok ale wizualnie do kitu no i jak wiemy w tych grach często liczą się sekundy
Próba 2:
Użyłem biblioteki jquery i odświeżam sobie stronkę zapisując aktualną datę do bazy powiedzmy co 15s. Wizualnie wszytko OK jednak wada jest taka ze wylogowując się surowce nie rosną , chodź po kolejnym lgowaniu przyrost się wyrównuje to jednak nie ma to sensu.

Próba3:
Strona odświeżająca się co 15s jednak trzymać ciągle on-line mało stabilne rozwiązanie.

Odpowiadając na trapiące pytania nie piszę gry jednak jestem bardzo ciekawy jak to jest rozwiązywane w tych grach on-line.

Pozdrawiam
prz3kus
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
franki01
post
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Tworzysz klasę/funkcję (użyję przykładu klasy) User_Updater. Robisz metody odpowiedzialne za aktualizowanie surowców - User_Updater::minerals($userID), odświeżanie wysłanych skanów/ataków - UserUpdater::attacks($userID) itd. W tych metodach piszesz skrypty obliczające aktualną ilość surowców (sposób podany jest wyżej), sprawdzających i przetwarzających ataki, które się skończyły jakiś czas temu i cokolwiek dusza zapragnie. Zawsze, gdy jest potrzebna aktualna ilość surowców gracza, stan jego floty albo ilość aktualnie wyprodukowanych jednostek do walki, wywołujesz te metody. Muszą być napisane przemyślanie i z głową, żeby nie było sytuacji, gdy po ataku gracz zabierze tyle surowców, ile jest w tym momencie, a nie godzinę temu, kiedy atak się odbył. Jest wiele innych sposób na rozwiązanie problemu. Mi akurat takie coś przyszło do głowy.

EDIT:
Cytat(thek @ 4.09.2009, 21:51:25 ) *
A pomyślałeś o czymś w stylu sleep() ? Z tego co wnioskuję to prawdopodobnie grasz w Delirium (IMG:style_emoticons/default/winksmiley.jpg) Walisz sleep na ileś sekund lub ustawiasz wręcz określoną godzinę poprzez time_sleep_until() i zapominasz.

sleep() usypia cały interpretator PHP, żaden inny skrypt w tym czasie nie będzie się wykonywał.

Ten post edytował franki01 4.09.2009, 20:58:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 01:24