24.06.2008, 08:01
Jo dürfte gut passen. Ich würd zwar speichern, wann er das nächste mal Punkte bekommt. Dadurch erspar ich mir bei jedem aufruf, dass er +3600 rechnen muss und hab des nur einmal. Aber das ist wohl außer bei Hochperformanceanwendungen außer Acht zu lassen
$sub könntest aber auch noch schöner Berechnen. Musst net wieder 3600*z rechnen und des dann abziehn, sondern einfach [code=php]$sub=$a%3600;[/code].
Nennt sich Modulo und liefert den Rest zurück.
Schön würd des dann so aussehn:
[code=php]
if(Time()>$getpoints){
$a=Time()-$getpoints;
$z=ceil($a/3600);
$sub=$a%3600;
$NeuerPunktestand=($z*$PunkteproStunde)+$alterpunktestand;
$getpoints=Time()-$sub+3600 ;
}
[/code]
So hoffentlich jetzt net vertan
edit:
bzw ganz kurz halt
[code=php]
$time=Time();
if($time>$time_get_next_points){
$difference=$time-$time_get_next_points;
$new_points=(ceil($difference/3600)*$points_per_hour)+$old_points;
$getpoints=$time-($difference%3600)+3600 ;
}
[/code]
Richtig schön wär jetzt noch die 3600 durch ne konstante zu ersetzen
Problem seh ich nur wenn derjenige länger net online is bleiben seine Punkte hängen, sprich in ner Übersicht würden imma nur die Punkte vom letzten Login angezeigt werden. Würd eher ein Script per CronJob (oder notfalls au im Skript abfragen- musst dann aba wieder aufpassen das net mehrere stunden keiner oben war) laufen lassen, dass bei jedem User stündlich die Punkte erhöht.
Würd dann halt mit MySQL sehr schön gehn mit einem einzigen Befehl der alle User aktualisiert.
[code=php]UPDATE users SET points = points + 1000[/code]
$sub könntest aber auch noch schöner Berechnen. Musst net wieder 3600*z rechnen und des dann abziehn, sondern einfach [code=php]$sub=$a%3600;[/code].
Nennt sich Modulo und liefert den Rest zurück.
Schön würd des dann so aussehn:
[code=php]
if(Time()>$getpoints){
$a=Time()-$getpoints;
$z=ceil($a/3600);
$sub=$a%3600;
$NeuerPunktestand=($z*$PunkteproStunde)+$alterpunktestand;
$getpoints=Time()-$sub+3600 ;
}
[/code]
So hoffentlich jetzt net vertan
edit:
bzw ganz kurz halt
[code=php]
$time=Time();
if($time>$time_get_next_points){
$difference=$time-$time_get_next_points;
$new_points=(ceil($difference/3600)*$points_per_hour)+$old_points;
$getpoints=$time-($difference%3600)+3600 ;
}
[/code]
Richtig schön wär jetzt noch die 3600 durch ne konstante zu ersetzen
Problem seh ich nur wenn derjenige länger net online is bleiben seine Punkte hängen, sprich in ner Übersicht würden imma nur die Punkte vom letzten Login angezeigt werden. Würd eher ein Script per CronJob (oder notfalls au im Skript abfragen- musst dann aba wieder aufpassen das net mehrere stunden keiner oben war) laufen lassen, dass bei jedem User stündlich die Punkte erhöht.
Würd dann halt mit MySQL sehr schön gehn mit einem einzigen Befehl der alle User aktualisiert.
[code=php]UPDATE users SET points = points + 1000[/code]
Write this on my gravestone, write this right on my grave, "To whisky and women, here lies a poor slave".
Computer- und Mediensicherheit - FH Hagenberg
Hagenberger Kreis zur Förderung der digitalen Sicherheit
Security Forum
Computer- und Mediensicherheit - FH Hagenberg
Hagenberger Kreis zur Förderung der digitalen Sicherheit
Security Forum