Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Time-triggered script
Forum PHP.pl > Forum > PHP
Karwoch
Witam was serdecznie, nawet nie wiem jak ten temat napisać po polsku... Noszę się wreszcie z zamiarem napisania gry www, która od dawna mi już chodzi po głowie, problemem którego nadal nie wiem jak rozwiązać jest uruchamianie operacji na bazach danych (po uprzednim dokonaniu obliczeń) po stronie serwera, bez konieczności inicjacji zadania przez użytkownika. CRON odpada, bo za wolny i zdaje się nie tak dokładny, operacje muszą się odbywać co do sekundy i być bardzo szybkie, zakładając iż będzie tego po kilkaset w ciągu sekundy... Stąd też, nawet nie wiem czy jestem wstanie coś takiego w PHP napisać, czy też muszę wrócić do programowania w C++... Ale przecież to użytkownicy będą inicjować te operacje, po prostu obawiam się że DATE + czas będzie za wolny... Zakładając że będzie dużo użytkowników smile.gif Zna ktoś może jakieś lepsze rozwiązanie?

Pozdrawiam.
erix
Cytat
CRON odpada, bo za wolny i zdaje się nie tak dokładny, operacje muszą się odbywać co do sekundy i być bardzo szybkie

Pod jakim względem za wolny?

Możesz jeszcze spróbować skryptu w SH, jest na Sieci przepis.
Karwoch
CRON jest dobry gdy ma się kilka zadań, ale nie gdy są ich setki, z tego co mi wiadomo, dość mozolnie pracuje i potrafi znacznie obciążyć procesor niestety. Na unixie trochę kiedyś pracowałem, jednak zbyt mało aby coś powiedzieć, musiałbym poczytać, nie mniej,czy dałoby się zrobić łatwą komunikację z przeglądarką? Hm... Coraz bardziej wracam do pomysłu wykorzystania DATE + czas, nie wie ktoś przypadkiem na ile ta instrukcja obciąża serwer? Bo nie będę ukrywać iż optymalizacja będzie dla mnie istotna, na początek będzie musiał wystarczyć duron 800, na nic więcej póki co mnie nie stać smile.gif
wookieb
Cytat(Karwoch @ 31.08.2009, 20:50:20 ) *
CRON jest dobry gdy ma się kilka zadań, ale nie gdy są ich setki, z tego co mi wiadomo, dość mozolnie pracuje i potrafi znacznie obciążyć procesor niestety.

No to właśnie nim zrobisz setki zadań. Cronem uruchamiasz skrypt php i on sobie coś robi. Więc prędkość zależy od skryptu jaki napiszesz.
Poza tym nie do wszystkiego musi być cron.
Karwoch
Tyle że CRON odpala się co 5 minut, najwyżej co minutę, a będę potrzebować dokładności do sekundy...
wookieb
http://php.net/sleep
Karwoch
Bosko! Dzięki, będę się tym bawić smile.gif

No niestety, ale to wstrzymuje wszystkie operacje i użytkownik by musiał czekać np. 2 godziny, aż powiedzmy wykona się misja, zanim cokolwiek innego zrobi winksmiley.jpg
wookieb
Czy ty masz jakiekolwiek pojęcie jak się tworzy gry via www? To nie jest zdanie " O zrobie sobie grę" jak nie masz podstaw ( a widać, że nie masz, a tym bardziej głowy). Wiesz co to jest w ogóle cron? Masz jakiekolwiek pojęcie od czego zacząć w grze www? My ci całościowego kursu nie udzielimy.
Void
Jeśli myślisz, że takie gry jak ogame są oparte o odświeżanie w każdej sekundzie danych kilkunasty tysięcy użytkowników to IMHO się mylisz smile.gif Jeżeli, tak jak piszesz, użytkownik np. o 15:00 zaczyna wykonywać jakąś misję, która trwa np. godzinę, to nie ma sensu przez całą godzinę lecieć po sekundzie i sprawdzać czy może akurat teraz nie powinna zakończyć się ta misja. Po prostu, gdy użytkownik odświeży stronę (lub zaloguje się ponownie, bo godziny może nie wytrzymać przy grze przeglądarkowej smile.gif), może to być np. o 16:15 to sprawdzana jest kolejka czynności, które zostały zapisane do wykonania o określonej godzinie a czas ich zakończenia porównywany jest z czasem aktualnym i wywoływane są te akcje, które powinny być już zakończone w przeszłości. Wtedy np. po zalogowaniu może zostać wykonanych kilkanaście zaległych akcji i nie ma problemu, bo wysyłając jakiekolwiek komunikaty do użytkownika podaje się "zaplanowany" czas wykonania danej akcji a nie rzeczywisty (czyli czas zalogowania) co daje wrażenie ciągłego działania konta w grze, nawet gdy jesteśmy nieaktywni.
Karwoch
Właśnie myślałem nad takim rozwiązaniem, trochę tabel relacyjnych i faktycznie można w ten sposób zrobić. Nie byłem pewien, z racji iż łatwo pomieszać kolejność zadań, ale po prostu będę musiał nad tym pomyśleć, dzięki za dobre wytłumaczenie, najważniejsze że już wiem jak to zrobić, reszta z czasem winksmiley.jpg Naprawdę jestem wdzięczny, bo to mnie dość trapiło, resztę oprę na JavaScript + AJAX, to też piękne narzędzie (rzecz jasna też PHP i PostGresSQL, bo to zdaje się jest lepsze dla dużych baz danych). Dopiero od 3 miesięcy piszę w PHP, wcześniej C++, szczęśliwie składnia prawie identyczna, tylko że łatwiej smile.gif Zdążyłem już pokochać ten język, o pracy na tablicach nie wspominam, po prostu bajka biggrin.gif Gdyby jeszcze tylko światła dziennego nie ujrzał IE 6.0, a najlepiej w ogóle IE, to już cały byłbym szczęśliw winksmiley.jpg
krowal
Temat już chyba skończony, więc zaczne offtop.
A co ma IE do PHP ? smile.gif
deirathe
Misiu a nie lepiej użyć sobie np takiego pythona on przetrzymuje wszystko w pamięci i co jakiś czas robić flush do bazy danych? I udostepniać z poziomu pythona SOAP dla PHP?
Tylko nie odpalaj pythona jako moduł do apacha bo wtedy to traci sens.

Btw. Serwer na taką gierkę i tak będziesz potrzebować dedykowany więc instalacja pythona na nim to nie problem smile.gif
Karwoch
Deirathe, to widzę że muszę poznać Pythona smile.gif Broniłem się przed nim zawsze, ale jeśli potrafi robić okresowo zapis do bazy danych, to z pewnością jest to dużo wydajniejsze rozwiązanie. Z resztą miałem właśnie pytać, czy nie da się robić operacji na bazie danych w pamięci, bo na szybkie dyski to mnie stać na początku nie będzie... A ram nie jest taki drogi, a znacznie szybszy. I tak, będę to stawiać albo na własnym sprzęcie, albo wynajmować cały wirtualny serwer, za 10 euro na miesiąc jest już taki 1Ghz, na 100Mbit łączu, co wcale nie wypada źle. A i tak instalują to co Ty chcesz smile.gif

Też mały offtop, ale z tym związany, zawsze wydawało mi się iż czas dostępu to czas, który dysk potrzebuje aby dobrać się do informacji. Nowe dyski flash`owe mają w danych wpisane 0,2 ms, jednak z tego co wiem, właśnie na długość dostępu do różnych plików nie ma sensu jeszcze ich stosować na serwery. Z pewnością jakieś pojęcia mylę, wie ktoś może jakie? smile.gif

Krowal, to tylko ze względu na to, iż CSS jest dla mnie zupełną nowością i nie mogłem się powstrzymać od komentarza, bo myślałem że mnie szlag trafi przy ostatnim projekcie, gdy sobie wymyśliłem na przykład position: fixed winksmiley.jpg. Czy też slideDown w javaScript i zobaczyłem jak to chodzi na IE 8.0...
wookieb
O boże. nawet css-a nie znasz a chcesz się brać za gry. To tak jak pisanie gry w c++ znajac tylko petle...
Karwoch
Napisałem symulację ruchu pieszych w C++ to i napiszę to. CSS jest prosty (irytujące jest tylko brak standardów dopiero wchodzą, to jak pisanie pod linuxa i windowsa naraz z lekką przesadą tego przykładu winksmiley.jpg ), PHP w stosunku do C++ też jest prosty, o HTML`u, SQL`u nie wspomnę. JavaSript i AJAX to wręcz sama przyjemność pisania. A jak Ty się nauczyłeś pisać programy, pisząc, czy poddając się, ooo nieee, to za trudne dla mnie!? smile.gif
deirathe
Jeżeli chodzi o tworzenie gier to nie chodzi tylko o programowanie, pozostaje Ci kwestia grafiki(bardzo ważna), grywalnośc (kolejny ogame to katastrofa będzie- nic szczególnego) no i dużo innych. Apropos pythona - język stosunkowo prosty, dostępna jest obszerna dokumentacja, dużo polskich publikacji- także to nie problem, problem jest że zaczynając programować/uczyć się jakiegoś języka rzucać się odrazu do pisania gier bez podstawowej znajomości architektry języka to jakbyś próbował chodzić zimą w klapkach po cieńkim lodzie w samych gaciach:P To się źle skończyć może dla Ciebie lub środowiska- oczywiście nie staram się tu ubliżać Twoim umiejętnością.
Karwoch
Pomysł na gierkę to już mi chodzi po głowie od bardzo dawna i jest to coś, czego właśnie jeszcze nigdy nie widziałem w necie, dość rozbudowany, także mało pisania na pewno nie będzie. Grafika szczęśliwie też mam, dla którego zrobię stronę, a w zamian on mi grafikę do mojej. I nie spodziewam się że pierwszy projekt będzie dobrze chodzić, w najlepszym wypadku w połowie zacznę pisać od nowa. Ale jedno co wiem że potrafię, to wymyślać ciekawy pomysł na MMoRPG, z racji iż w postaci aplikacji, to 10 miliardów złotych nie starczy, zostaje mi przeglądarka, ale to ostatnimi czasy zyskuje sobie coraz większą popularność. Symulację ruchu pieszych pisałem rok, ale było warto, nauczyłem się naprawdę sporo. To był mój pierwszy projekt w OpenGL i pierwszy tak duży program w C++, ale dało się, chodziło, dało się robić badania na tym, zmieniać układ pomieszczenia, z udziałem do 200 ludzi naraz smile.gif. Wiem że jak podejmę normalną pracę, to tego projektu nigdy nie skończę, po pracy takiego molocha pisać, to tylko sfera marzeń, także albo teraz zrealizuje swoje marzenie, albo nigdy smile.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.