Countdown auf php/mysql session bezogen

  • Hallo Freunde,

    Ich habe bereits ein ajax/jquery code, bei dem ich die werte von der datenbank hole.


    Also:

    Ich habe einen link, der bei onclick eine function ausführen soll. Das klappt.


    Die function tut folgendes:

    Der onclick postet die attribute und die function erkennt ja quasi welcher link geklickt wurde.. per php lese ich die werte aus der datenbank bzw. Ich lasse in den countdown script die sekunden eintragen die in der datenbank schon vorhanden sind.

    Das klappt ja alles soweit.


    Der hauptsächliche punkt ist:

    Was ich haben will ist eigentlich, dass sich der countdown auf den angemeldeten user bezieht sprich: session bezogen ist. Und nicht bei refresh page verschwindet.. oder relog oder bei sonstigem.. es sei denn ich lasse den countdown abbrechen per link.


    Ich hoffe ihr könnt mir helfen.


    Mfg

  • Vieleicht sollte man auch erstmal vorher wissen wozu der Counter da sein soll ?

    Soll der Counter nur für deine Besucher sein damit die sehen wie lange die gerade online sind , bzw insgesamt waren ? Dann würde ja localStorage reichen. Oder willst du selber die Daten auch irgendwo speichern und sehen können ? Dann wäre ja Php und Datenbank das richtige.

  • Der countdown ist nur nach dem anklicken aktiv.. jeder link hat seine eigene zeit.. wenn der countdown abgelaufen ist, soll erst mysql befehl ausgeführt werden..


    Wenn ich also als user mich anmelde.. den gewissen link anklicke.. nehmen wir mal an es dauert 5 stunden.. dann will ich mich auch ausloggen können aber nach ablauf des countdowns soll alles trotzdem passieren ohne dass man quasi online ist.

  • Das geht viel einfacher, Du speicherst den Zeitpunkt, an dem der User den Link klickt in der Datenbank, am besten als DATETIME und entfernst bei jedem HTTP-Request einfach alle, die älter 5Std. sind, oder wie auch immer Du den Status ausgelogged umsetzt.

    Dazu ist ein Timer gar nicht notwendig.

  • Der timer ist deswegen notwendig.. der benutzer soll die verbleibende zeit sehen können wenn er eingeloggt ist.. aber den zeitpunkt zu speichern ist gut.. das müsste ich jetzt per js dynamisch machen.. damit man die zeit ablaufen sieht.

  • Ein HTTP-Request kann auch schon mal ein paar Sekündchen dauern. In einem Zeitraum von 5 Stunden würde es mich nicht wundern, wenn man auf ne Ungenauigkeit von einigen Minuten kommt.


    Angenommen, der User löst durch seine Aktionen in den 5 Stunden 150 Requests aus und jeder Request dauert im Schnitt 2sek. ( kann an externe Abhängigkeiten liegen! ), dann hast Du schon 300s also gute 5 Minuten Ungenauigkeit. Und 150 Requests in 5Std. sind 30 pro Stunde, was nicht unwahrscheinlich ist.


    D.h., ich würde empfehlen, den Weg über Sessions zu gehen, um die User erkennbar zu machen und dann bei jedem Request den aktuellen Timer-Wert mitgeben, der Client seitig dann wieder als neuer Startwert für den JS-Timer genommen wird.


    Auch da ist es nie ganz genau, aber immer noch genauer, als wenn Du Dir etwas im LocalStorage speicherst und durch die Requests Verzug hast, den Du nicht ohne weiteres zur Berechnung heranziehen kannst.

  • Leider konnte ich mein problem von der arbeit aus auf die schnelle schildern. Wenn ich zuhause bin schicke ich mal den code mit.


    Ein user kann maximal 2 requests machen.. jeweils einen in einer rubrik.


    Auf der einen seite sind maximal 15 links die er klicken kann.. nach wahl.. wenn er einen anklickt darf er keine weitere und er soll stets den aktuellen countdown sehen können auch wenn er sich nach zwei stunden erneut anmeldet.. soll er die verbleibende zeit sehen können.. und auf der anderen seite kann er auch nur einen link von maximal 15 links anklicken können und da auch das selbe schema..


    Die aktion soll ja nur dann ausgeführt werden wenn die zeit abgelaufen ist.. ich will halt nur dass das alles automatisch passiert unabhängig davon ob der user 5 stunden lang auf den bildschirm starrt oder sich ausloggt und ins freibad geht und später danach schaut ob es soweit ist..

  • nein nein.. nicht vom thema abkommen.. der countdown script bzw function soll einfach die zeit ablaufen lassen die dann aber dynamisch ist quasi im sekunden takt auch zu betrachten ist.. nach ablauf der zeit soll sich die stufe erhöhen von der angeklickten fläche.. und für die nächste stufe erhöht sich auch die zeit um einen gewissen faktor.. also kein streaming oder ähnliches..