Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyzwalacz akcji po upływie czasu bez crona
Forum PHP.pl > Forum > Przedszkole
JaNieWiem
Witam serdecznie,

Bardzo proszę o jakieś wskazówki - zagadnienie jest dla mnie na tyle nowe, że mam problem z zapytaniem googla tak, aby uzyskać jakąś sensowną odpowiedź.

Chciałbym napisać skrypt, który działałby analogicznie do tych znanych z gier MMO (np ogame). Nie piszę gry, jednak na tym przykładzie najłatwiej będzie mi wytłymaczyć istotę problemu.

Załóżmy, że gracz1 wysyła atak na gracza2. W bazie danych zapisuję czas wysłania, czas przeprowadzenia ataku oraz czas powrotu. Atak dolatuje na planetę przeciwnika i w tym momencie następuje kalkulacja, ile surowców udało się wygrać - czyli dane te pobierane są z bazy gracza2 dokładnie o czasie przybycia, a nie są symulacją tego, co byłoby gdyby atak odbył się natychmiast po wysłaniu floty (czyli dajmy na to o godz. 14, skoro rzeczywisty atak nastąpił dwie godz. później).

Czy macie może jakiś pomysł, jak zrobić coś takiego nie zmuszając użytkownika, by siedział cały czas przed przeglądarką (javascript odpada), a także bez uzycia crone' a? Czy coś takiego w ogóle jest możliwe?

Pozdrawiam!
tzm
Z tego co pamiętam jak się bawiłem ugamelami i ostatnio nawet xgp_core to tam nie było użycia crona.
W sumie też mnie to dziś ciekawiło i sam nie bardzo wiem jak temat ugryźć, akurat w moim przypadku o grę chodzi.
Zastanawiam się czy nie chodzi o to:

https://edu.pjwstk.edu.pl/wiki/0037693cfc74...CookieSupport=1

Dołączam się do dyskusji i pytania autora smile.gif
timon27
1.
Dlaczego bez crona? Pytam bo w 90% takich pytań okazuje się że można to zrobić cronem ale zadający pytanie z błędnego przeświadczenia myśli że nie.

2. Skoro nikt nie spogląda na grę to nie ma potrzeby wykonania akcji. Dopiero w momencie gdy któryś z graczy zaloguje się możesz wykonać akcję gdyż nie ma znaczenia kiedy zostanie wykonana skoro nikt tego nie widzi.
JaNieWiem
Cytat(timon27 @ 22.06.2014, 19:41:02 ) *
1.
Dlaczego bez crona? Pytam bo w 90% takich pytań okazuje się że można to zrobić cronem ale zadający pytanie z błędnego przeświadczenia myśli że nie.

Hmm.... jeśli tak mówisz, to sprawdzę to jeszcze raz dokładnie wink.gif. Chociaż patrzyłem już 10000 razy w cpanelu, a także w helpie i nic takiego nie znalazłem sad.gif
Cytat
2. Skoro nikt nie spogląda na grę to nie ma potrzeby wykonania akcji. Dopiero w momencie gdy któryś z graczy zaloguje się możesz wykonać akcję gdyż nie ma znaczenia kiedy zostanie wykonana skoro nikt tego nie widzi.

To prawda, jednak zdarzenie musi być zarejestrowane dokładnie o czasie - analogicznie do obliczania surowców do "pobrania" w danej minucie, a nie dopiero po zalogowaniu.

Czy wyzwolenie triggera w bazie danych może w jakiś sposób wpłynąć na pliki php na serwerze? Wyzwolenie triggera = aktywacja pliku PHP, jest taka możliwość?smile.gif
by_ikar
Poczytaj o eventach w mysql. Możesz je tworzyć z poziomu skryptu php, dodając do nich określony czas kiedy mają się wykonać i ile razy mają się wykonać. Żeby wiele razy tego samego nie pisać, do takiego eventu możesz podczepić procedurę i przekazać do niej jakieś dane. Nie jestem pewien czy tak działają tego typu serwisy, ale tak można by to było zrobić. Oczywiście jak już ktoś wyżej napisał, jest jeszcze cron, do którego możesz podłączyć swój skrypt php, który będzie sprawdzał w jakiejś tabeli w bazie danych, czy są jakieś "zadania" do wykonania. Do takiego zadania możesz przypisać czas żeby mieć pewność że nie zostanie wykonane wcześniej. No opcji jest na pewno jeszcze conajmniej kilka.

EDIT: trigger działa na zasadzie akcji - jeżeli ty coś zrobisz, to on zostanie wyzwolony. Więc nie odpowiada to temu co napisałeś w pierwszym poście. Dodatkowo - baza danych to jest zupełnie osobny proces i jeżeli się z nim komunikujesz to na zasadzie z php do mysql. Odwrotnie raczej nie.
JaNieWiem
Dziękuję za odpowiedź! Jutro w pracy będę miał aż za dużo wolnego czasu, więc zagłębię się w lekturę. I pewnie wrócę tutaj z kolejnymi pytaniami wink.gif.
Na chwilę obecną dziękuję serdecznie i z radością usłyszę o innych możliwościach rozwiązania tego problemu, o których wspominałeś. Pozdrawiam!
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.