[PHP]Efficiëntie data

Gestart doorGuillamos30 reacties73 weergaven

31 berichten · pagina 2 van 3

Berichten
5.957
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Guillamos schreef:
Ik heb geen idee hoe vaak hij wordt aangeroepen, alleen zal ik de tijd tussen cronjobs dan aanpassen aan de hoeveelheid bezoekers. De data:
  • id
  • lid id
  • wereld
  • coordinaten
  • datum
  • type
  • informatie over lid (naam, punten, bescherming)(alleen wanneer het een dorp is)

Is trouwens een soort van browsergame omdat ik iets uitdagends wou maken.
Ik dacht al dat je browsergame achtig wou doen. Ten eerste zou ik werelden scheiden met verschillende databasen. Zodat je mysql_select_db(Wereld1) doet. Dat lijkt mij voor later sneller/beter omdat je dan het werk over meerdere servers kan gaan verdelen. Ten tweede zou ik niet met xml werken. Ik ga ervanuit dat je een soort van map ding wil maken?
Maak gewoon iets als map.php?xmin=1&xmax=5&ymin=1&ymax=5 (deze haalt het uit de database) en laat dan op je echte map, bv mapecht.php een xml.httprequest doen om elke keer die info op te vragen zodat je niet hoeft te refreshen.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Alemaalte schreef:
Ik dacht al dat je browsergame achtig wou doen. Ten eerste zou ik werelden scheiden met verschillende databasen. Zodat je mysql_select_db(Wereld1) doet. Dat lijkt mij voor later sneller/beter omdat je dan het werk over meerdere servers kan gaan verdelen.
Wat? redfaceNee dat moet je echt neit doen... gewoon echt nee.. sadley
Je kunt normale enkele databases ook al zo opschalen, dat gaat prima en kan zelfs met MySQL. Verschillende databases gebruiken is echt nergens voor nodig, je zit dan onwijs te denormaliseren en je kunt nooit even snel en makkelijk informatie uit een paar werelden aanmaken.
Bovendien zit je dan per wereld een aparte database te maken.

Dat moet je echt gewoon niet doen.
0
Guillamos

Lid · Topicstarter

Berichten
832
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Alemaalte schreef:
Maak gewoon iets als map.php?xmin=1&xmax=5&ymin=1&ymax=5 (deze haalt het uit de database) en laat dan op je echte map, bv mapecht.php een xml.httprequest doen om elke keer die info op te vragen zodat je niet hoeft te refreshen.
Ja, daar heb ik ook al over na zitten denken maar ik wil dan een gebied van 24x24 weergeven;
en dan zit je al gauw op 576 keer checken voor slechts een stuk land. Daarom wil ik de informatie in xml proppen. Ik kan zelf geen betere oplossing verzinnen voor dit.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Alemaalte schreef:
Eerdere citaten tonen
Rogier schreef:
Ik zou xml doen. Zeker als je veel bezoekers verwacht.
@derest: Als je er geen verstand van hebt (vooral @wouterp). Begin er dan ook niet aan. Hij heeft jullie verteld wat voor data hij verwacht en vraagt alleen wat de beste manier van verwerken is.

Zeg jij nou dat ik er geen verstand van heb?
Dus zonder te weten hoeveel bezoekers dat hij heeft, zonder te weten hoevaak die data gerefresht moet worden, met de vage beschrijving van wat die data inhoud, etc. Kan jij zeggen dat hij voor de cronjob moet gaan?
ja? En nee ik zeg niet dat jij er geen verstand van hebt. Ik noem specifiek WouterP. Ik zeg alleen dat je met gegevens die hij geeft genoeg zou moeten kunnen inschatten wat het handigst is.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
En als je je coordinaten nou ook opdeelt in gebieden van 24x24? Dus net als in Minecraft dat je met blockjes en met chunks werkt?

Elke chunk geef je een apart id, en dan kun je dus met één query zien wie er in hetzelfde gebied zit. Je zet een index op dat chunk-ding en dan is het zo snel als iets wat erg snel is.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Voor iedereen is de map toch hetzelfde? Dan zou ik gewoon de map uit xml lezen.
0
Guillamos

Lid · Topicstarter

Berichten
832
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja, dat ben ik ook van plan.

De hele wereld is opgedeeld in continenten van 24x24.
In een continent zitten 9 landen van 8x8.
En in een land zitten dan weer dorpen, bossen en meertjes van 1x1 emo
Alleen daar ging het niet om, het ging om wat nou het beste is met veel results.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Guillamos schreef:
Alleen daar ging het niet om, het ging om wat nou het beste is met veel results.
Nouja daar gaat het wel om biggrin, want als je 24x24 coordinaten moet checken dan krijg je gigantische queries, dus daarom kun je het beter opdelen in grotere stukken zodat je daarop kan checken. Dat is veel efficienter en werkt veel sneller en beter en handiger dan controleren of een wat op een van die 24 x 24 = 576 coordinaten staat.

Als je dat zo doet dan kun je dat makkelijk realtime doen voorlopig.
Als je het met XML files doet en je hebt veel users dan worden die files ook onwijs groot, en dan ben je je tijdwinst alweer kwijt aan het inlezen van die bestanden.
0
Guillamos

Lid · Topicstarter

Berichten
832
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Eerdere citaten tonen
Guillamos schreef:
Alleen daar ging het niet om, het ging om wat nou het beste is met veel results.
Nouja daar gaat het wel om biggrin, want als je 24x24 coordinaten moet checken dan krijg je gigantische queries, dus daarom kun je het beter opdelen in grotere stukken zodat je daarop kan checken. Dat is veel efficienter en werkt veel sneller en beter en handiger dan controleren of een wat op een van die 24 x 24 = 576 coordinaten staat.

Als je dat zo doet dan kun je dat makkelijk realtime doen voorlopig.
Als je het met XML files doet en je hebt veel users dan worden die files ook onwijs groot, en dan ben je je tijdwinst alweer kwijt aan het inlezen van die bestanden.
Ja maar ik heb geen idee hoe ik dat moet doen, hoe wil ik dat nou ophalen met het continent? moet ik dan de bewoonde coordinaten in een extra kolom stoppen en dan extra informatie over een dorp ophalen met ajax wanneer dat nodig is?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Wat wil je precies voor data hebben dan? Je wil enkel de bewoonde coördinaten weten?
0
Guillamos

Lid · Topicstarter

Berichten
832
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja, de rest haal ik op via AJAX wanneer iemand op het dorp klikt.
0
Berichten
5.957
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
SELECT * FROM dorpen WHERE x>$xmin and x < $xmax and y > $ymin and y < $ymax, lijkt mij niet zon heel intensieve query.

toevoeging op 14 maart 2012, 211249:
Lennard schreef:
Eerdere citaten tonen
Alemaalte schreef:
Ik dacht al dat je browsergame achtig wou doen. Ten eerste zou ik werelden scheiden met verschillende databasen. Zodat je mysql_select_db(Wereld1) doet. Dat lijkt mij voor later sneller/beter omdat je dan het werk over meerdere servers kan gaan verdelen.
Wat? redfaceNee dat moet je echt neit doen... gewoon echt nee.. sadley
Je kunt normale enkele databases ook al zo opschalen, dat gaat prima en kan zelfs met MySQL. Verschillende databases gebruiken is echt nergens voor nodig, je zit dan onwijs te denormaliseren en je kunt nooit even snel en makkelijk informatie uit een paar werelden aanmaken.
Bovendien zit je dan per wereld een aparte database te maken.

Dat moet je echt gewoon niet doen.
Als je alles in 1 database gaat steken, en je denkt, uhm nu heb ik 50 werelden miss wordt het eens tijd om de volgende wereld te doen op een andere mysql server dan moet je weer heel je script ombouwen.
0
Guillamos

Lid · Topicstarter

Berichten
832
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Alemaalte schreef:
SELECT * FROM dorpen WHERE x>$xmin and x < $xmax and y > $ymin and y < $ymax, lijkt mij niet zon heel intensieve query.
Deze lijkt mij ook niet zo intensief nee dus deze zal ik dan ook gaan gebruiken.
Ik bedank jullie heilige helpers worshippy
0
Berichten
1.631
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Eerdere citaten tonen
Alemaalte schreef:
Eerdere citaten tonen
Rogier schreef:
Ik zou xml doen. Zeker als je veel bezoekers verwacht.
@derest: Als je er geen verstand van hebt (vooral @wouterp). Begin er dan ook niet aan. Hij heeft jullie verteld wat voor data hij verwacht en vraagt alleen wat de beste manier van verwerken is.

Zeg jij nou dat ik er geen verstand van heb?
Dus zonder te weten hoeveel bezoekers dat hij heeft, zonder te weten hoevaak die data gerefresht moet worden, met de vage beschrijving van wat die data inhoud, etc. Kan jij zeggen dat hij voor de cronjob moet gaan?
ja? En nee ik zeg niet dat jij er geen verstand van hebt. Ik noem specifiek WouterP. Ik zeg alleen dat je met gegevens die hij geeft genoeg zou moeten kunnen inschatten wat het handigst is.
Wijzen naar een ander kunnen we allemaal.

Ik wist niet precies wat hij nou wou dus even dimmen thanks.
//sorry voor offtopic
0
Berichten
5.957
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Wou jij het met een while doen en dan x en y altijd verhogen? lol maar goed dat ik wat doorvroeg dan want dat lijk me inderdaad wat te resource intensief/
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren