Ik wil een soort spel maken op mijn forum. Per seconde moeten er punten gegeven worden aan elk lid. Die punten worden opgeslagen in de database. Maar ik kan natuurlijk niet elke seconde een query uitvoeren. Weet iemand hoe ik dit het beste kan doen?
met time de tijd opnemen, en dan op iedere pagina checken of er al een X aantal seconden om zijn, en dan 1 keer per X seconden een querie laten uitvoeren
tijd opnemen van gebruiker wanneer die ergens klikt;

tijd opnemen van gebruiker wanneer die nog eens klikt + verschil tijd * aantal punten doen en die punten optellen in db;

tijd opnemen van gebruiker wanneer die nog eens klikt + verschil tijd * aantal punten doen en die punten optellen in db;

tijd opnemen van gebruiker wanneer die nog eens klikt + verschil tijd * aantal punten doen en die punten optellen in db;

...
je kan ook met crons gaan werken.
Die crons werken iig precies het zelfde als hierboven gemeld staat.
alleen maak je dan een apart script ervoor zodat het overzichtelijker is wat er wordt uitgevoerd in secondes.
Maar die crons geef je wel dezelfde waarde als wat php newbie en hipska zeggen
Iedere seconden een cron draaien lijkt mij performance technisch gezien niet echt handig. Het kan, maar efficient is het niet.
Iedere minuut is dat wel veilig? Ik moet natuurlijk ook aan de buren denken op de server.

En zou ik dit dan met javascript kunnen doen? Dat op de pagina zelf lijkt alsof er elke seconde punten bij komen, maar dat die dan elke minuut in de database word bijgewerkt?
bij mijn opzetje komen er enkel maar punten bij als het lid de site ook werkelijk 'bezoekt' (bij elke opening van een pagina)
De database kan uitstekend rekenen met datums en tijden, zie bv. hoofdstuk 12.5 van de MySQL handleiding.

Zo kun je bij een update dus prima berekenen hoeveel seconden, minuten, uren, etc. er sinds de laatste update zijn verstreken. Op basis van dit resultaat kun je dan een X-aantal punten gaan toevoegen.

Een cron-job is voor dit soort functies volkomen overbodig. Waarom? Omdat iemand die niet aan het spelen is, ook niet hoeft te weten hoeveel punten hij/zij heeft. Wil je 1x per dag om 00:00 een tussenstand bepalen en deze opslaan voor het nageslacht, dan heb je daar een cron-job (of een goede wekker...) voor nodig.
<?php
$hoeveel_puntjes = 3;
for($i=1; $i<=$hoeveel_puntjes; $i++) {
echo '. ';
sleep(1);
}
?>

ik heb niks gelezen dus neem mij niet kwalijk als ik een heel verkeerd scriptje geef

[edit]
Verkeerd script dus :P
beetje verkeerde volgorde, posten -> lezen
[/edit]

Reageren