Time event server
 
bostjan 17. maj 2012 16:59:32 Pridružen od:
31. jul 2008
643 objav
689 30 9
#1

Mogoče kdo pozna kakšen "time event server" (niti ne vem kako se tej zadevi pravi).



Rad bi, da nekako sporočim kateri event se naj ob določenem času sproži. Recimo primer kako naj bi delovalo je igra travian. Tam ko napadeš sosednjo vas ti pove da bo bitke ob XX času konec. Sedaj v tem primeru bi jest rekel temu serverju ob XX uri mi sproži event "endBattle" z IDjem bitke 5.



No če kdo karkoli takega pozna bom zelo hvaležen. Ali pa samo idejo kako bi se to imenovalo in kako naj iščem.



Cron ni ql ker deluje na minute, jest bi rabil sekunde.


všeč(0) ni všeč(0) spam(0)
 
technolog 17. maj 2012 17:17:21 Pridružen od:
14. nov 2011
598 objav
768 300 22
#2

Cron enostavno ni namenje za take stvari.



Pravilna rešitev je, da si hraniš čas konca eventa in ob vsakem pageloadu preveriš, če je kakšen pretečen event še neobdelan. In če je, najprej obdelaš event, potem šele nadaljuješ z običajnim delom pri loadu strani. To je idealen način, ker za skripto ne bo razlike, če se bitka konča šele deset sekund kasneje, če prej ni bilo nobenega pageloada.



Baze imajo zelo učinkovito narejeno to, da ugotoviš, če je še kak neobdelan event, le pravilen index moraš postavit, pa imaš odgovor v roku delčka milisekunde, ki ne upočasni pageloada čisto nič.



Pa še moral boš pazit, da ti ne bosta dva pageloada začela obdelovat isti event, ker bo to pomenio, da boš izvedel dvojni napad/akcijo. Za to boš moral uporabit transakcije, ki jih ponuja večina današnjih DBMSjev.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
bostjan 17. maj 2012 18:23:37 Pridružen od:
31. jul 2008
643 objav
689 30 9
#3

Ja to je tudi ena izmed idej toda sem upal da obstaja kakšna prov namenska zadeva. Bom jutri na šihtu še malo pregledal kaj pravi stric googlu. Drugače bom pa spet odprl Visual Studio in bo C# power :D


všeč(0) ni všeč(0) spam(0)
 
technolog 17. maj 2012 18:28:55 Pridružen od:
14. nov 2011
598 objav
768 300 22
#4

Ena od idej je, da ti na strežniku v ozadju lavfa daemon (google it), kateremu sporočaš dogodke, ta pa kliče ustrezne stvari ob danem času.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
bostjan 17. maj 2012 18:32:03 Pridružen od:
31. jul 2008
643 objav
689 30 9
#5

Ja sem ravno ko sem post napisal šel to gledal. Verjetno bo to končna rešitev. Nek PHP daemon, ki bo preverjal vse zadeve.


všeč(0) ni všeč(0) spam(0)
 
metallon 17. maj 2012 20:14:39 Pridružen od:
28. apr 2012
362 objav
326 70 8
#6

Glej zadevo malo bolj enostavno.



Če jaz tebe napadem .... a je važno da se stvar izvede, če ni nobenga na strani?

Torej dokler en od naju ne pride na stran se dogodek ne rabi izvesti.



Ko pa pride .. nekdo od naju nazaj, pa skripta enostavni preveri, če je kakšen dogodek potrebno izvesti in ga izvede.


všeč(0) ni všeč(0) spam(0)
 
technolog 17. maj 2012 20:19:33 Pridružen od:
14. nov 2011
598 objav
768 300 22
#7

Točno to sem jaz napisal:




To je idealen način, ker za skripto ne bo razlike, če se bitka konča šele deset sekund kasneje, če prej ni bilo nobenega pageloada.



všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
metallon 17. maj 2012 20:23:51 Pridružen od:
28. apr 2012
362 objav
326 70 8
#8

Se opravičujem sem zdaj tvoj post prabral... prej sem samo nahiterco pregledal :)


všeč(1) ni všeč(0) spam(0)
 
bostjan 18. maj 2012 07:30:35 Pridružen od:
31. jul 2008
643 objav
689 30 9
#9

No to je bil samo primer :D Fora je da time event mora preverit konec dogodka, da vse akterje obvesti na mail/sms.

Se pravi ko se bitka konča ti dobiš na mail (ali sms) obvestilo o tem in o rezultatu.



Saj to je samo primer in se ne bo uporabljalo za igre ;)


všeč(0) ni všeč(0) spam(0)
 
technolog 18. maj 2012 08:05:11 Pridružen od:
14. nov 2011
598 objav
768 300 22
#10

V tem primeru, če je treba obvestit prek maila/smsja, je pa vprašanje, koliko je še tolerančen zamik. Če je to ena sekunda, potem druge rešitve kot daemon ni.



Če je toleranca do ene minute, potem lahko pa uporabiš cron, poleg rešitve v #2 (sepravi kar je prej - pageload ali pa proženje crona).


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se