Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyzwalacz akcji po upływie czasu bez crona
JaNieWiem
post 22.06.2014, 19:03:13
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.03.2014

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


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
tzm
post 22.06.2014, 19:20:27
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

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


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
Go to the top of the page
+Quote Post
timon27
post 22.06.2014, 19:41:02
Post #3





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


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.
Go to the top of the page
+Quote Post
JaNieWiem
post 22.06.2014, 20:20:41
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.03.2014

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


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
Go to the top of the page
+Quote Post
by_ikar
post 22.06.2014, 20:47:21
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


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.

Ten post edytował by_ikar 22.06.2014, 20:49:23
Go to the top of the page
+Quote Post
JaNieWiem
post 22.06.2014, 21:57:50
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.03.2014

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


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!
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: 14.08.2025 - 05:08