Über Timestamp prüfen ob die aktuelle Zeit über 15 Minuten liegt (MYSQL)

Eiskaffe

Mitglied
Hallo Damen und Herren,

ich habe ein kleines Problem, ich finde einfach keine Lösung und ich habe schon über 4 stunden gegoogelt in Englishen und Deutschen Foren, da bliebt mir nur noch die letzte Lösung, ein Thema selber erstellen kommen wir zu meinem Problem:

Ich möchte ein Online/Offline anzeige erstellen, dies hab ich auch schon gemacht, er soll die Zeit in der Datenbank Prüfen ob die Aktuelle Zeit über 15 Minuten schon her ist. Gibt es eine möglichkeit das wenn er die Zeit überschreitet wurde automatisch ein Eintrag in die Datenbank erstellt? Z.b Spalte 'status' wird auf 0 gesetzt also Offline, dies geschieht aber nur wenn der Benutzer die Seite aktuallisiert doch dies soll nicht passieren, dies soll direkt passieren wenn die Zeit überschritten ist und nicht erst wenn der Benutzer die Seite aktuallisiert hat, gibts da ne Möglichkeit? Vielleicht das ein Timer in der Datenbank ist und runterzählt? Oder geht das nur mit JavaScript? Ich bedanke mich schonmal im vorraus.

Mit freundlichen Grüßen
David Koch
 
Dazu müsstest du per cronjob alle x-Minuten ein Skript aufrufen welches die vorhandenen Einträge prüft.
 
Achso ok, wie machen das die anderen Seiten? Wenn man ca 15 Minuten inaktiv ist das man session_destroy() macht und in der Datenbank steht unter status dan 0, machen die meisten das auch mit cronjob?
 
Hallo Eiskaffe,

so etwas könnte man über einen Cronjob lösen. Aber das ist an der Stelle keine elegante Lösung.

Besser wäre es, wenn Du in der Abfrage für die Online/Offline Anzeige den Zeitstempel der letzen Aktivität, welchen Du hoffentlich speicherst, prüfst.

Beste Grüße
 
Vielleicht das ein Timer in der Datenbank ist und runterzählt?
Wie wäre es mit einem Cronjob, welcher dann SQL-Statements ausführt?

Oder geht das nur mit JavaScript?
Vorausgesetzt, dass du klientseitiges JS meinst: wie soll das funktionieren?

Besser wäre es, wenn Du in der Abfrage für die Online/Offline Anzeige den Zeitstempel der letzen Aktivität, welchen Du hoffentlich speicherst, prüfst.
Wäre ein kleines bisschen unperformant. Stell dir z.B. ein Forum wie hier vor. Für jeden Benutzer der min. 1 Beitrag in einem Thread geschrieben hat, muss du ein Query ausführen.
 
@Raisch: Genau das machst du per Cronjob. Du rufst zeitgesteuert ein Skript auf in dem du genau diese Anweisung(en) stehen hast.

Alle Einträge in der Datenbank die älter als z.B. 15 Minuten sind werden dann automatisch gelöscht bzw. "status = 0" gesetzt.

Es ist auch möglich das du beim Laden jeder Seite eine Funktion aufrufst die das erledigt. Je nachdem wieviel Zugriff du hast wird die Datenbank dann aber ganz schön gefordert.
 
Wäre ein kleines bisschen unperformant. Stell dir z.B. ein Forum wie hier vor. Für jeden Benutzer der min. 1 Beitrag in einem Thread geschrieben hat, muss du ein Query ausführen.
Beim Auslesen des Posts macht das Forum sicherlich einen Join auf die Usertabelle um die Daten des Autors zu holen, an der Stelle kann man den Timestamp auch wieder prüfen.
 
Hallo Raisch,

ich speichere jede Aktivität in die Datenbank über DATETIME also wenn man z.b jetzt zur index Seite geht speichert er in die Datenbank ein DATETIME und dan soll er prüfen wie lange das her ist, aber die prüfung führt er nur aus wenn man die Seite aktuallisiert oder wenn man halt zur index zugreift.

Mit freundlichen Grüßen
David Koch
 
Beim Auslesen des Posts macht das Forum sicherlich einen Join auf die Usertabelle um die Daten des Autors zu holen, an der Stelle kann man den Timestamp auch wieder prüfen.

Ja gut, wenn man eine Spalte lastOnlineTime o.Ä. in der Users-Tbl. hat, macht es natürlich 0 aus.

Ich dachte beim Schreiben der Antwort an eine Logtabelle, welche jeden Aufruf eines Skriptes speichert.
 
Ich brauche ein Timeout wenn man z.b Browser schließt wird das script nicht mehr ausgeführt und somit kann der status nicht auf 0 gesetzt werden wenn die sitzung zerstört wird und da hab ich schwierigkeiten weil ich nicht weiß wie ...
 
Zurück