[PHP] Bankscript Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktivitt
aktuellen kontostand
aktuellen kontostands
auf
bank
besagten tages
daten
datenmll
fragen
gengen
inhalt
komplizierter kleine frage
log
lsen
mittelwert
tabelle
tag
uhr
user
whrung
-
Hey!
Ich habe mal wieder eine Frage .
Also ich programmiere ein Script und wenn man eine Seite lädt (wenn man eingetag/log">loggt ist) wird in der Datenbank die aktuelle Zeit in `lactivity` gespeichert.
Nun sitze ich an einer kl. Bank (mit der Seiteninternen Währung ;) keine ¤-Bank ) und ein Cron wird alle 4 Std. (ausgenommen 00:00 Uhr) ausgeführt und speichert den aktuellen Kontostand in einer Tabelle.
Um 00:00 Uhr wird ein anderer Cron ausgeführt der den Mittelwert des aktuellen Kontostands und den Checks ausrechnet. Klappt auch alles super, nur mein Problem kommt jetzt:
Man soll nur die Verzinsung bekommen wenn man nach 12:00 Uhr online war!
Mein Code sieht dann so aus:
if( date("H", $u['lactivity']) >= 12 ) { /* Dann Zinsen geben */ }
Nur da die Crons ja nicht immer direkt um 00:00 Uhr ausgeführt werden, gibt es Probleme, wenn man nun als User um 00:01 z.B. auf der Seite ist wird in `lactivity` ja die Uhrzeit 00:01 gespeichert und der Cron erst z.B. um 00:03 ausgeführt.
Dieser User bekommt dann keine Zinsen mehr!
Gibt es eine Möglichkeit, dass der User trotzdem noch die Zinsen bekommt?
Danke schoneinmal ;)
Beitrag geaendert: 5.5.2007 12:51:09 von sneerfire -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie speicherst du das Datum in "lactivity"? Du könntest noch so etwas einbauen
IF:
gespeicherte zeit MINUS akutelle zeit KLEINER/GLEICH 12h (43200 sec)
OR:
gespeicherte zeit in stunden KLEINER/GLEICH 12 uhr
DANN:
zinsen geben
Man könnte auch das ganze Datum mit einberechnen, aber dann wird's komplizierter.
Kleine Frage noch: Sind die Zinsen von andern Usern abhängig? Sonst würde ich das nicht mit crons lösen... -
Versuch doch mal den gespeicherten timestamp auf gerade Stunden hoch zu summieren. Das setzt voraus, dass dein cronjob irgendwann zwischen 23:00 und 24:00 Uhr erfolgt. Wenn dieser Zeitraum gegeben ist, werden Zinsen berechnet, wenn nicht, dann halt nicht.
Alternativ und vielleicht sogar besser:
mach ne Log-tabelle in Deiner Datenbank, in der Du die Kundenaktivitäten speicherst. Diese liest Du am Ende des Tages mit deinem cronjob-Script aus und löschst dann alle Einträge des besagten Tages. Somit wird die Tabelle nicht so groß und Du produzierst keinen Datenmüll.
Beim auslesen solltest Du natürlich darauf achten, dass Du nur Daten des zu verzinsenden Tages berücksichtigst und Daten für evtl. überschneidende Tage nicht löschst.
(z.B. Aktivität von 00:01 und cronjob um 00:03) -
Ich habe nun ganz simpel in der Datenbank ein Feld gemacht, in dem eine 1 gespeichert wird wenn der User nach 12 Uhr online war ;)
Der Cronjob liest dann alle Inhalte aus, in denen eine 4 steht und setzt am Ende alle Inhalte der Spalte auf 0.
So dürfte es eigentlich funktionieren.
@nigolaz: Als Timestamp speichere ich es dort. Damit kann man ja am meisten machen ;) -
Hast du 2te Frage vergessen: Sind die Zinsen von anderen Usern abhängig?
Sonst würde es doch genügen, die Zinsen bei jedem Einloggen zu updaten (oder upzudaten?) -
nigolaz schrieb:
Hast du 2te Frage vergessen: Sind die Zinsen von anderen Usern abhängig?
Sonst würde es doch genügen, die Zinsen bei jedem Einloggen zu updaten (oder upzudaten?)
Sry, übersehen ;)
Nein, aber die Zinsen sind von der Aktivität des Users abhängig ;)
Läuft ja aufs gleiche hinaus^^ -
nigolaz schrieb:
Hast du 2te Frage vergessen: Sind die Zinsen von anderen Usern abhängig?
Sonst würde es doch genügen, die Zinsen bei jedem Einloggen zu updaten (oder upzudaten?)
Sry, übersehen ;)
Nein, aber die Zinsen sind von der Aktivität des Users abhängig ;)
Läuft ja aufs gleiche hinaus^^
"Des" Users?? Oder "Der" User?? Da liegt doch der unterschied. Wenn jeder User abgekapselt ist, wären die Crons ja überflüssig. -
Also für Aktivitäten gibt es APs ;)
Und wenn man mehr als X APs hat wird X mehr verzinst ;)
Das ist für jeden User einzelnd.
Alle 4 Std. wird eh ein Cron ausgeführt der das aktuelle Guthaben speichert, und daraus wird bei dem letzten Cron um 00:00Uhr der Mittelwert genommen. Und der wird verzinst ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage