Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie zdarzeń w meczu siatkarskim, Menedżer siatkarski, mecz live
Apocalyptiq
post 8.08.2009, 16:29:20
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ć 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)?


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wookieb
post 8.08.2009, 16:53:03
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Apocalyptiq @ 8.08.2009, 17:29:20 ) *
Teraz chciałbym wprowadzić możliwość wprowadzania podczas meczu zmian, więc poprzednie rozwiązanie meczu odpada.

Nie. Możesz sobie wygenerować wszystkie zdarzenie i zaciągąć je co jakiś czas ajaxem.
Cytat
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 :-)

Cron ma minimalny zakres 1 minuty. Aby zadanie wykonywało się częściej musisz zrobić to co poniżej;

Cytat
Tylko że hosting, na którym najprawdopodobniej będzie gra (prohost.pl) ma limit wykonywania skryptu na 40 sekund, więc i tu klapa :/

http://pl.php.net/set_time_limit jeżeli da radę.

Cytat
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)?

Myślę ze generowanie ich ajaxem co jakiś czas byłoby bardzo dobre. W sensie przy pobieranie danych ajaxem generujesz zdarzenie, które uwzględnia zmiany użytkownika. Gorąco polecam tutaj wykorzystanie flasha i AMF

Ten post edytował wookieb 8.08.2009, 16:53:11


--------------------
Go to the top of the page
+Quote Post
kfc4
post 8.08.2009, 16:55:07
Post #3





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


A nie możesz po prostu wyliczyć jedną akcję, przekazać ją i zakończyć skrypt, później za pomocą jakiś zmiennych (np. POST), przesłać do skryptu informacje co chce user zrobić, i wylicz akcję i mu ją przesłać? Całość będzie js/ajax więc w miarę dynamicznie.

// Kurde, spóźniłem się.

Ten post edytował kfc4 8.08.2009, 16:55:54
Go to the top of the page
+Quote Post
Apocalyptiq
post 8.08.2009, 17:13:13
Post #4





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

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


Hm, nie wiem czy opieranie generowania meczu na requestach użytkowników oglądających mecz będzie dobrym rozwiązaniem. Dany mecz może oglądać jednocześnie sporo osób, nie tylko właściciele uczestniczących w nim drużyn, ale też jakiegoś meczu może akurat nikt nie obejrzeć, a wygenerować go by należało (raport z meczu) :-)

set_time_limit() nie daje rady, nadal po 40 sekundach skrypt siada :/


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
wookieb
post 8.08.2009, 17:15:02
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W takim razię sądzę, że powinieneś generować relację dla całego meczu, a jeżeli coś zostanie zmienione w jego parametrach to od aktualnego momentu generować dalsze wydarzenia.

Ten post edytował wookieb 8.08.2009, 17:15:19


--------------------
Go to the top of the page
+Quote Post
Apocalyptiq
post 9.08.2009, 10:58:33
Post #6





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


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 14:56