Autor Zpráva
yFang
Profil
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
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
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
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
Díky, s tím ukládáním času to bude asi ideální.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0