Autor | Zpráva | ||
---|---|---|---|
yFang Profil |
#1 · Zasláno: 16. 4. 2009, 17:39:52
Dejme tomu, že bych měl on-line hru, kde by se každou minutu obnovoval kousek životů danému hráči (dokud by neměl plný počet).
Jak by se to dalo technicky realizovat? Napadá mě CRON a každou minutu spouštět skript, který to provede, nicméně to se bojím, že bude přetěžovat databázi. |
||
Joker Profil |
#2 · Zasláno: 16. 4. 2009, 17:46:22
Teoreticky by to šlo nějak takhle:
- v DB mít životy a čas poslední aktualizace - Životy by se při zjišťování dopočítávaly: <životy z databáze> + (<počet minut od poslední aktualizace životů v DB> * <počet obnovených životů za minutu>) - No a při jiné změně stavu životů, než to "automatické obnovování" by se prostě vypočítal nový stav, ten uložil do DB a zároveň nastavil čas poslední aktualizace stavu životů. |
||
tiso Profil |
#3 · Zasláno: 16. 4. 2009, 17:47:11 · Upravil/a: tiso
yFang - robí sa to tak, že sa život aktualizuje až keď ho je treba. Napríklad ho treba zobraziť, ukázať výsledok zápasu so súperom, ...
Do DB ukladaj stav (%) života, čas poslednej aktualizácie, a ako rýchlo sa obnovuje (ak je to rozdielne u rôznych hráčov). Potom to nie je problém vypočítať kedy chceš. |
||
Nox Profil |
#4 · Zasláno: 16. 4. 2009, 18:01:44
Záleží na povaze veličiny (frekvence změny, četnost přístupu k ní, množství v tabulce...), může být někdy lepší cron nebo onview (akci spustí přístup uživatele dle uloženého času pro update veličiny, ale problém s atomicitou) protože pokud vím, tak je mnohem, mnohem rychlejší 1x updatovat 1000 záznamů než 1000x jeden záznam
|
||
yFang Profil |
#5 · Zasláno: 16. 4. 2009, 20:30:29
Díky, s tím ukládáním času to bude asi ideální.
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0