![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam!
Pracuję nad menedżerem siatkarskim, robię jego drugą wersje (poprzednią pisałem bez żadnego frameworka i taki jest burdel w kodzie, że aż sie nie chce w kod zaglądać (IMG:style_emoticons/default/biggrin.gif) ). W grze tej jest transmisja meczów na żywo. W poprzedniej wersji rozwiązałem to tak, że o godzinie startu meczu generowałem wszystkie jego wydarzenia, do końca, a później tylko stopniowo te wydarzenia (akcje) serwowałem oglądającym. Teraz chciałbym wprowadzić możliwość wprowadzania podczas meczu zmian, więc poprzednie rozwiązanie meczu odpada. Jedna akcja trwa tak średnio 15 sekund, więc cron jobem nie da rady ich stopniowo generować - crona można najcześciej włączać co 1 min (chyba że tylko na moim hostingu tak jest, ale myśle że nawet jakby dało rade, zajechałbym pewnie serwer :-) Jeden pomysł jaki narazie wpadł mi do głowy, to tak: wygenerować zdarzenia pierwszej akcji, uśpić php ( sleep() ) na czas trwania akcji, następnie wygenerować następną itp. Tylko że hosting, na którym najprawdopodobniej będzie gra (prohost.pl) ma limit wykonywania skryptu na 40 sekund, więc i tu klapa :/ Jakby ten limit był chociaż na minutę, może i dałoby radę - co minute odpalać cronem obliczacz akcji, i na zmiane generowanie akcji i sleep(). Ale czy to jest dobre rozwiązanie? Może ktoś pracował przy podobnym projekcie, macie jakieś fajne pomysły, jak generować poszczególne akcje tak, aby dać możliwość użytkownikom ingerencji w przebieg meczu (zmiany, branie czasu)? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki za poradę, właśnie wpadłem na coś podobnego :-)
Więc tak, mecz startuje CRON, który odpala się np. o 18:00 i generuje akcje, aż dosięgnie nastepnej minuty (np. pierwsza akcja trwa 20s, druga 25sek, trzecia 19sek, to już mam w sumie 1 min i 4 sek, czyli starczy). Jeżeli żaden user nie ingerował w mecz - relacja idzie. Jeżeli np. wprowadził zmiane - jego request usuwa wszelkie akcje, które zostały wygenerowane po tej, po której wprowadził daną zmianę i od razu wykorzystuję ten request aby wygenerować akcje do końca danej minuty. Troche rozwiązanie na około, ale trzeba się dostosowywać do tego, co się ma do wykorzystania (IMG:style_emoticons/default/biggrin.gif) Spróbuję to zrobić właśnie w ten sposób, no bo serwer dedykowany to już większy wydatek - najtańszy na moim hostingu kosztuje 100zł na miesiąc, więc dopiero co startująca gra raczej nie da rady wygenerować tyle kasy, aby go utrzymywać, najwyżej w przyszłości ;-) [EDIT] Jednak jest nadzieja na serwer dedykowany, więc nie mając już żadnych limitów wykonywania się skyptu, możnaby puścić jeden skrypt php, który co sekundę sprawdzałby, czy są do wygenerowania jakieś akcje - tylko czy taki niekończący się skrypt nie zawiedzie? Oczywiście wtedy set_time_limit()em bym wydłużał jego limit czasowy tak, aby się nie skończył. Praktykował ktoś coś takiego? :-) Albo ostatecznie co minute odpalać crona, który będzie się wykonywał co sekundę przez minutę, ale to na to samo wyjdzie. Tyle że w tym przypadku przy nawet drobnej awarii serwera skrypt by się zatrzymał, i żaden mecz nie rozgrywał :/ Więc chyba pokombinuję połączyć crony ze sleep(1) :-) Ten post edytował Apocalyptiq 9.08.2009, 10:59:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 05:28 |