Timers?
Gewijzigd op 01/01/1970 01:00:00 door Henk
Afsluiten en weer openen en toch groen: PHP + MySQL
Dit zijn de grote lijnen. Verder zou je gewoon op Google moeten zoeken.
@ Gamer13: Het afsluiten en toch groen openen zou je ook met cookies kunnen doen, JavaScript dus ;-) .
@Ponzi: Ik wil graag het gebruik van cookies vermijden en ik zie niet hoe cookies mij gaan helpen met het uitvoeren van een scriptje als er geen pagina geopend is.
in de cookie kun je de tijd zetten waarop de pagina groen is gemaakt. Als de pagina dan wordt geopend kun je met PHP de cookie uitlezen de goede achtergrond meegeven...
@PHP Newbie: Ik had wellicht er bij moeten vermelden dat andere mensen de pagina ook groen moeten zien zonder dat degene die op de button van het groen maken had geklikt na de 30 seconden nog de pagina had geopend. Maar in ieder geval bedankt voor het meedenken.
(ff een schetsje)
In cookie -> NOW + 30 seconden(future)
Op de pagina -> if(now >= future)....
@GaMer15: Wat ik net dus zei, als iemand op die button drukt en dan afsluit dan moet iemand anders ook na de 30 seconden een groene pagina krijgen. Volgens mij lukt dat niet met cookies.
Weer eens een schets:
Persoon 1: Klik
Pagina -> click so -> update row : clicked = 1 & update row: future time = +30 seconds
Persoon 1: gaat weg lol
Persoon 2: opent site
30 seconden wachten.....
Pagina -> get from database: future time -> if(now >= future time) then:
GROEN!
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Zo zou het inderdaad lukken, bedankt :). Maar dan nog even een vraag, kan ik ook iets in de database veranderen zonder een browser, want nu verandert persoon 2 dus met het openen van de pagina de database. Is het dus ook mogelijk om iets te hebben wat in de database iets verandert wat de pagina groen maakt, dat persoon 2 dus gewoon de pagina opent en de variabele voor de achtergrond kleur alleen uit de database haalt?
Je kan met een cronjob de database aanpassen evt.
@YPM: Een cronjob lijkt mij te veeleisend, die zou je zo'n beetje elke seconde een pagina moeten laten aanroepen om op tijd het juiste scriptje uit te voeren. Het zou 'iets' moeten zijn dat ahw continu waardes checkt en bij de juiste waardes een script uitvoert. In mijn geval zou er bij het drukken op de knop dus een tijd komen waarop de pagina groen wordt en dat 'iets' verandert dan de database wanneer huidige tijd gelijk is aan de tijd waarop de pagina groen moet worden.
misschien handig als je gewoon uitlegd wat je wilt zodat iedereen met het hele plaatje mee kan denken?
Je hebt misschien gelijk, ik vond het eerst niet nodig alles uit te leggen en dacht mijn probleem goed weer te kunnen geven mijn pagina met de rode en groene achtergrond maar dat was dus kennlijk niet zo. Wat ik dus wil is een browser based spel. Er is bijvoorbeeld een speler die een actie uitvoert dat hij over bijvoorbeeld een half uur een andere speler aanvalt. Het zou natuurlijk raar zijn als die speler het hele half uur online moest zijn om de aanval te laten lukken. Het zou eveneens raar zijn als de aanval pas werd uitgevoerd nadat hij na die 30 minuten weer inlogde. Er moet dus iets zijn dat continu bezig is en als er aan bepaalde voorwaarde wordt voldaan dat dat iets de opdracht uitvoert, in dit geval dus de aanval. Ik hoop zo duidelijk genoeg te zijn geweest :)
Het probleem is, dat een pagina een momentopname is. Wat jij wilt, is een soort realtime verbinding met je DB zodat de pagina van andere gebruikers aangepast wordt op precies het juiste moment. Ik ben geen AJAX kenner, maar volgens mij moet je die kant op.
Ja, ik weet dat de pagina een momentopname is, daarom wil ik de pagina's ook alleen maar de opdrachten géven en dus de uitkomsten weergeven. Dat 'iets' moet dus de opdrachten úitvoeren. Ik zal eens AJAX bestuderen, als iemand nog andere suggesties heeft hoor ik die graag.
Ik heb AJAX eens bekeken maar die methode gebruikt de browser ook, hij communiceert echter wel met de database zonder pagina's te reloaden maar een browser blijft nodig. Dus ik weet nog steeds hoe ik dus een script uit kan voeren zonder dat er een browser aan te pas komt, althans; niet de browser van een gebruiker, ik moet waarschijnlijk iets 24/7 laten runnen, wellicht een browser.
Volgens mij is dat zo goed als onmogelijk als je je server niet wil overbelasten.
Het moet mogelijk zijn, ik weet niet wat menig MMOG gebruikt. Wellicht denk ik totaal in de verkeerde richting maar zij hebben wel het resultaat waar ik naar verlang.
Er zijn maar een paar situaties waarin het nodig is dat er een script uitgevoerd wordt zonder dat een user een pagina opvraagt. In een spel moet het ook anders kunnen. Zodra ik een pagina opvraag moet via het logica deel van je script berekend kunnen worden wat de user in beeld krijgt.
Zet in je tabel een kolom erbij, die aangeeft of iets is uitgevoerd of niet. (kan je ook kijken adh van de tijd)
Is het nog niet uitgevoerd, maar de tijd wel, dan kan je in je basis script ervoor zorgen dat dat op het moment dat een willekeurige gebruiker de bewuste pagina uitvoerd.
Echter zit hier een (groot) risico aan, en dat betreft het mogelijke toeval dat 2 gebruikers tegelijkertijd het script aanroepen.