Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeliczanie czasu w rzeczywistości
Forum PHP.pl > Forum > PHP
Boshi
Cześć,
takie mnie nurtuje pytanie. Jeżeli ktoś grał w plemiona to wie jak wygląda system budowania. Chodzi o to, że klikamy jakiś budynek z czasem np 3h i po 3h on jest wybudowany. W jaki sposób to jest zaprojektowane? A w szczególności jak wykonana jest operacja przerywania budowania? Bo podejrzewam, żę jak wybudujemy coś to dane idą do bazy.

PHP + NODE.JS+ websocety?

Teoretycznie; nie dało by się tego zrealizować PHP + js? coś w stylu, klikamy, odpala się zegar w js i po odpowiednim czasie wykonywany jest insert do bazy? (mega prymitywne biggrin.gif)

p.s temat jest luźny, bo nie tworzę czegoś takiego a po prostu z ciekawości pytam.
emstawicki
Dlaczego nie, w takiej prostej wersji PHP + JS jest to możliwe (przykład plemion - ta gra pamięta moje czasy edukacji szkolnej smile.gif).
Podczas wywołania budowania zapisujesz znacznik czasowy w którym rozpoczęto budowę i planowany czas zakończenia, różnica tego jest progresem. JS to tylko prezentacja danych może być w formie licznika odmierzającego w dół.
Boshi
A profesjonalnie na jakiej zasadzie jest to budowane?
zegarek84
wspomniałeś o websocketach - którą wersję plemion próbowałeś zdebugowaćquestionmark.gif - podejrzewam, iż 2 gdyż 1 nie posiada websocketów...

jak wspomniał emstawicki dane tam są przedstawiane w formie liczników w dół, po stronie serwera są zapisywane zdarzenia i w teorii powinny one wykonywać się po kolei, dane możesz zapisywać np. w bazie i trochę przed pobrać do deamon'a który te zdarzenia w dokładniejszym czasie obrobi... cała główna koncepcja jest taka, iż w 1 to nawet nie musiałeś mieć włączonej obsługi JS by w to pograć ;]... wszystko odbywało się po stronie serwera, oczywiście przy wyłączonym JS zdarzenie widziałeś dopiero po odświeżeniu strony...

muszę przyznać, iż był okres gdy ta gierka mnie wciągnęła... w sumie dzięki niej daaawno temu w przeszłości dobrze poznałem JS do userscript oraz automatyzujących zadanie skryptozakładek, trochę o bazach danych i algorytmach do generowania sobie optymalnych linków z faremkami gdyż z mapki źle się farmiło };->
Skie
Poczytaj o long-pollingu.
Boshi
Czyli to tak na prawdę wszystkie zdarzenia w czasie rzeczywistym (czas budowy, rosnące surowce bez przładowania itd) to webSocety i pewnie jakiś node.js ? to jest ta sama zasada działania zdaje się jak przy powiadomieniach w czasie rzeczywistym?
ogólnie poczytam sobie o tym, porobie jakieś ćwiczenia, bo ciekawią mnie zagadnienia eventów w czasie rzeczywistym.
Skie
Nie, to nie są websockety. To jest long-polling z wykorzystaniem samego HTTP. Klikasz na budowę budynku, do serwera leci requet, serwer przelicza czas kiedy budowa się zaczęła, odsyła do przeglądarki ile ma ona czekać, przeglądarka uruchamia timer a po tym czasie odświeża automatycznie stronę. Nic wiecej tutaj nie potrzeba. A jak koniecznie chcesz się bawić websocketami to zamiast mieszkać PHP z Node.js użyj albo samego Node.js albo WebSocketów w PHP.
Boshi
Czyli jeżeli chcę zrobić jakieś tam powiadomienia na stronę to mogę wykorzystać

long polling?
albo node + web socet?

jak się ma ratchet do połączenia noda i websocetów? dla prostej apki? są jakieś problemy o który warto wspomnieć? (ruch na stronie raczej mały)

Skie
Zaleznie od potrzeb używasz albo WebSocket, albo HTTP Long-Polling. To pierwsze jest wydajniejsze, ale wymaga customowej logiki, bo nie jest zgodne z tym jak działa HTTP w 100%. Z tego co piszesz to long-polling będzie wystarczajace.

WebSocket to nie jest wynalazek node'owy. Jest to pewien standard. Websocketów możesz używać również w PHP, Pythonie, Ruby i zapewne wielu innych językach programowania.

Ratchet to implementacja WebSocketów w PHP, dzięki czemu nie potrzebujesz Node.js by ich używać. Ratchet jest wydajniejszy od implementacji node'owych, ale nie jest aż tak enterprise'owy jak np socket.io. A jak myślisz nad WS w PHP to oprócz ratcheta polecam jeszcze sprawdzić Kraken/Network smile.gif
Boshi
Przetestuje ratcheta, potem ajaxa w long polling i zdecyduje, choć pewnie masz rację, że long polling będzie w moim wypadku lepsze. Dzięki za rozjaśnienie wink.gif
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.