Forum » Izdelava spletišč » Php skript
Php skript
DeeCoy ::
Pozdravljeni!
Izdelujem spletno igro, tako malo za zabavo.
Podobna naj bi bila travianu, če kdo pozna. Surovine naj bi se vsem uporabnikom povečevale.
Tukaj se pojavi problem. Mislim, da mora v ozadju tečt skripta, ki vse skupaj dela. Kako naj to dosežem? Se pravi, vsako minuto vrednost vseh surovin na vsakem accountu poveča za x.
Potrebujem samo idejno zasnovo ali primer :)
Hvala vnaprej
Izdelujem spletno igro, tako malo za zabavo.
Podobna naj bi bila travianu, če kdo pozna. Surovine naj bi se vsem uporabnikom povečevale.
Tukaj se pojavi problem. Mislim, da mora v ozadju tečt skripta, ki vse skupaj dela. Kako naj to dosežem? Se pravi, vsako minuto vrednost vseh surovin na vsakem accountu poveča za x.
Potrebujem samo idejno zasnovo ali primer :)
Hvala vnaprej
black ice ::
Cron job, ki se sprehodi po celotni bazi in pri vsakem uporabniku spremeni poljubne podatke (v tvojem primeru surovine) za x.
DeeCoy ::
Hvala za odgovor.
Kot vidim, tole ne bo ravno preprosto.
Kot vidim, tole ne bo ravno preprosto.
Zgodovina sprememb…
- spremenil: DeeCoy ()
kr?en ::
S tem, da moras potem te posodobljene podatke asinhrono pushat uporabniku na browser, da se mu osvezi prikaz.
DeeCoy ::
Ja, to bo že šlo.
Ima še mogoče kdo idejo zasnovo, da vsakemu accju povečam te surovine? Razen z while zanko za vsak acc id ne gre?
Ima še mogoče kdo idejo zasnovo, da vsakemu accju povečam te surovine? Razen z while zanko za vsak acc id ne gre?
DeeCoy ::
Preprostejšo, kot da vsako minuto poženem skript, ki vsakemu idju poveča vse surovine za x dokler ne pride to konca idjev
DeeCoy ::
Saj ne da je zakomplicirano, ampak ker sem še dokaj neizkušen, nevem, kako hitro se podatki pridobivajo in zapisujejo v MySQL baze. Skrbi me, koliko časa bi se taka koda izvajala na npr. 1000 igralcih, če bi v vsaki zanki zapisoval v MySQL
Gandalfar ::
Lahko si jih tudi batchas. Ob vsakem povecanju imas na recordu last_modified. Vsakic, ko se cron pozene jih selectas po n, ki imajo dovolj star last_modified pa uredis od nazadnje modified (torej najstarejsi prvi).
Ce si optimisticen si lahko das tudi time limit pa se pobijes po fiksni kolicini casa (to moras pazit, da ti kaksne transakcije/updati ne obvisijo). V tem primeru naredis vec updejtov, ce je server idle in manj, ce je busy.
Ce si optimisticen si lahko das tudi time limit pa se pobijes po fiksni kolicini casa (to moras pazit, da ti kaksne transakcije/updati ne obvisijo). V tem primeru naredis vec updejtov, ce je server idle in manj, ce je busy.
DeeCoy ::
@Gandalfar
Zankrat vse skupaj laufa na domači lokal mašini, se pravi da cron izvedem s windows task sh.
Se pravi, da to, kar si napisal ni nujno potrebno da bo vse laufalo kot more? Se pravi da je način, ki sem ga napisal jaz, dovolj hiter in se bo izvedel v doglednem času?
Zankrat vse skupaj laufa na domači lokal mašini, se pravi da cron izvedem s windows task sh.
Se pravi, da to, kar si napisal ni nujno potrebno da bo vse laufalo kot more? Se pravi da je način, ki sem ga napisal jaz, dovolj hiter in se bo izvedel v doglednem času?
Gandalfar ::
A, pozabil sem se napisat, da si das lock file. Ko ti prvi cron laufa, ce se ti slucajno drugi zazene, pogleda ce je lock file in ce je exitne. Potem s tem pristopom ne rabis pobijat procesa.
Ce ti dovolj hitro tece bos pa sam moral pogledat. Marsikaj se da pokvarit, da bo delal neuporabno pocasi ali pa cisto spodobno hitro.
Ce ti dovolj hitro tece bos pa sam moral pogledat. Marsikaj se da pokvarit, da bo delal neuporabno pocasi ali pa cisto spodobno hitro.
blackbfm ::
Saj ne da je zakomplicirano, ampak ker sem še dokaj neizkušen, nevem, kako hitro se podatki pridobivajo in zapisujejo v MySQL baze. Skrbi me, koliko časa bi se taka koda izvajala na npr. 1000 igralcih, če bi v vsaki zanki zapisoval v MySQL
naredi test..če ne boš naredil ravno ultra bebave zanke bi morala stvar it precej hitro, 1000x povečat en integer ni za računalnik nič
A, pozabil sem se napisat, da si das lock file. Ko ti prvi cron laufa, ce se ti slucajno drugi zazene, pogleda ce je lock file in ce je exitne. Potem s tem pristopom ne rabis pobijat procesa.
če bi že do tega prihajalo (ampak itak ne bo) je boljši pristop da se uporabi kakšen work queue, beanstalkd je recimo dober in enostaven
Zgodovina sprememb…
- spremenilo: blackbfm ()
DeeCoy ::
Kako dam lock file? V nastavitvah crona?
Skripta ne bo dolga, zasnova (seveda ne v phpju :) ) :
while($oRow = mysql_fetch_assoc($Get resources)
{
Get resources and increasing ratio
New_resources = resources + increasing ratio
Write resources in db
id++;
}
Bo to vredu?
Zaenkrat nebi kompliciral, saj delam samo skelet celotne igre, za finese si bom vzel čas, ko bo vse vsaj probližno laufalo.
Skripta ne bo dolga, zasnova (seveda ne v phpju :) ) :
while($oRow = mysql_fetch_assoc($Get resources)
{
Get resources and increasing ratio
New_resources = resources + increasing ratio
Write resources in db
id++;
}
Bo to vredu?
Zaenkrat nebi kompliciral, saj delam samo skelet celotne igre, za finese si bom vzel čas, ko bo vse vsaj probližno laufalo.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Optimizacija API-jaOddelek: Programiranje | 1903 (1136) | AndrejS |
» | tabela z povabili v PBOddelek: Izdelava spletišč | 714 (637) | c00L3r |
» | [baze] Povezava do slike ali BLOB?Oddelek: Programiranje | 1666 (1463) | BlueRunner |
» | EXPORT: MSSQL -> file -> MySQLOddelek: Programiranje | 1878 (1785) | delfy |
» | Težave z arrayOddelek: Izdelava spletišč | 1292 (1104) | Kricert |