timer in mysql
Is er een of ander script, om bijvoorbeeld elke minuut iets in een mysql veld te scrijven, zonder dat ik dat met de hand moet doen?
Ik maak namelijk een text-game, en daarin heb je een ijzermijn, en dan wil ik bijvoorbeeld dat per minuut deze code word uitgevoerd:
en dat hij dat dan bij elke gebruiker uitvoerd? zonder dat je ingelogd hoeft te zijn? het KAN wel, want dat gebruiken ze ook bij O-GAME. Kan iemand me helpen?
Alvast bedankt!
zet de tijd van klikken dan in de database en als ze inloggen vergelijk je het tijdsverschil, en 5*de tijd / 5, berekend dan hoeveel ijzer ze erbij hebben gehad... maar dit is alleen nodig wanneer je geen cronjobs hebt..
Ik snap dat laatste niet helemaal, maar ik google wel ff ;)
Hoe werken die cronjobs precies? en hoe kan ik ze in mn server zetten? Ik heb php 5 ondersteuning, en heb mysql met phpmyadmin 2.6.3... Mijn site is dukesoft.nl.. Hoe kan ik dat alles doen?
Ik klik voor de laatste keer om 11:30. Daarna is mijn eerstvolgende klik (maakt niet uit of ik online of offline ben geweest) om 12:10, dat is 40 minuten, oftewel, 8 keer 5 minuten, waardoor ik er 40 ijzer bij krijg..
Het is te doen zo, maarjah.. als je dan veel klikt, moet ik nog een oplossing zoeken.. :S
Iemand anders die me ff kan helpen? Ik loop een beetje vast, maar ik weet ook zeker dat ik zoiets laatst een keer voorbij heb zien komen.
Host je je site zelf? Of heb je een host? Zo ja welke host?
Ik heb een host, en dat is hosting2go. (www.hosting2go.nl) ik heb daarbij toegang tot plesk.
Maar ik maak mijn site op een offline PC, met easyphp als webserver.
Ik kijk wel ff bij de scripts voor cronjobs
Nop.. nix :(
Ik moet gaan... :( later
Mooi, als je inlogt, en je naar "servertaken" gaat, heb je daar iets van crontabs staan, daar kan je een script plaatsen en een tijdslimiet opstellen wanneer het script uitgevoerd moet worden.
Oplossing: Zet in de tabel waar je de hoeveelheid ijzer opslaat, ook een DATETIME. Hierin zet je de datum en tijd waarop dit record is bijgewerkt. Iedere keer dat iemand inlogt, naar een nieuwe pagina gaat of een page-refresh doet, kijk je (m.b.v. de handige datum- en tijdfuncties van MySQL) hoeveel tijd er is verstreken sinds de vorige update. Voor iedere minuut die is verstreken voeg je vervolgens een X-hoeveelheid ijzer toe.
Deze oplossing scheelt je een gigantische hoeveelheid queries die op de database worden losgelaten. I.p.v. 1440 (60x24) queries per speler per dag, zul je er slechts enige tientallen tot honderden per dag hebben. En dat niet eens iedere dag, lang niet iedereen zal iedere dag spelen. Het is zinloos om een update uit te voeren wanneer niemand iets met deze update doet.
Ik zal eens kijken! Dat gebruiken ze volgensmij ook bij o-game... maar dan elke 10 seconden.. mja, dankjewel!
Maar... word dan met dat datetime naar de tijd en datum op de SERVER gekeken of op de PC van de speler zelf? want er zijn wel PC's waarmee de CPU klok kapot is...
Er wordt naar de tijd van de server gekeken.
Stel ik ben heel erg verslaafd aan het spel en ik doe 2 clicks per minuut.. hoe kan je dan aangeven hoeveel erbij komt? Je zal ook een bepaalde tijd moeten hebben waarmee je vergelijkt, een vaste tijd, dus niet alleen van je clicks!!
verder nog een punt:
Ik ben geen fan van cronjobs, de vraag was alleen over een TIMER in mysql.. en daar gaf ik antwoord op, voor een beginnend programmeur is het ook nog eens een gemakkelijke oplossing..