Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie zdarzeń w meczu siatkarskim, Menedżer siatkarski, mecz live
Apocalyptiq
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


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)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Apocalyptiq
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


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
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: 15.10.2025 - 05:28