» »

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

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.

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?

black ice ::

Kakšno rešitev pričakuješ?

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

black ice ::

Zakaj bi naj bilo to tako zakomplicirano opravilo?

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.

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?

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.

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.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Optimizacija API-ja

Oddelek: Programiranje
161764 (997) AndrejS
»

tabela z povabili v PB

Oddelek: Izdelava spletišč
6657 (580) c00L3r
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101596 (1393) BlueRunner
»

EXPORT: MSSQL -> file -> MySQL

Oddelek: Programiranje
71826 (1733) delfy
»

Težave z array

Oddelek: Izdelava spletišč
71232 (1044) Kricert

Več podobnih tem