Kirby886 Geschrieben 22. Juni 2009 Geschrieben 22. Juni 2009 Hallo zusammen! Ich hoffe ich hab das richtige Subforum für meine Frage erwischt, ist etwas Themen-übergreifend. Und zwar sind mir zur Lösung meines Problems (den Online-Status eines Users in der DB auf offline setzen, wenn der User ohne Logout die Website verlässt) zwei Möglichkeiten eingefallen: A) Ich benutze per JS (onbeforeunload) eine php-Datei, in der der DB-Eintrag geändert wird (im Detail hab ich hier bei jedem Link zur Navigation innerhalb der Seite eine Variable, die im onbeforeunload überprüft wird). Müsste noch kurz raussuchen wie ich das Anzeigen der php-Datei unterdrücken kann, aber das sollte ja machbar sein. Ich lass über Cronjob.de (mein Anbieter gestattet mir keine eigenen Cronjobs aufm Server) einen Cronjob zb jede Minute eine php-Datei ausführen, die in der Datenbank einen Eintrag bis 0 runterzählt, welcher bei jedem Klick des jeweiligen Users auf meiner Website auf 5 gesetzt wird. So wird ein User 5 Minuten nach seinem letzten Klick als Offline angezeigt. Lösung A setzt JS voraus, wobei ich eigentlich davon ausgehen kann, dass alle betroffenen User JS installiert haben. Lösung B würde mehr DB-Zugriffe initiieren, aber auch nur bedingt problematisch, da die DB wohl nicht allzu groß sein wird. Ich hab allerdings keine Erfahrungen mit Cronjobs und Cronjob.de - keine Ahnung wie zuverlässig und sicher das ist. Überseh ich irgendwelche Vor-/Nachteile oder Probleme? Was würden die erfahrenen Webprogrammierer hier eher empfehlen? Schwarzgelbe Grüße Zitieren
robotto7831a Geschrieben 22. Juni 2009 Geschrieben 22. Juni 2009 Hallo, oder Lösung C. Du hast eine Tabelle wo die aktiven User eingetragen sind. Dann fehlt dir ja nur noch ein Feld mit der Bezeichnung letzte_aktivitaet. Bei jeder Useraktivität wird dort das aktuelle Datum mit Uhrzeit eingetragen. Wenn ein User die Seite verlassen hat, dann wird logischwerweise das Feld nicht mehr aktualisiert. In einem zweiten Schritt läst Du bei jedem Aufruf der Startseite oder so ein zweites Skript laufen welches alle User löscht, die länger als 5 Minuten nicht mehr aktiv waren. Frank Zitieren
Kirby886 Geschrieben 22. Juni 2009 Autor Geschrieben 22. Juni 2009 Okay, das kommt an Lösung B heran. Ist sicherlich sinnvoller datetime zu benutzen anstatt so einen komischen Zähler, das seh ich ein. Aber wenn der letzte User die Seite verlässt, dann bleibt er unkorrekterweise als Online eingetragen, bis wieder jemand die Startseite aufruft. Ist nicht unbedingt schlimm, aber wenn ich das nicht akzeptieren möchte müsste ein Cronjob her, richtig? Zitieren
robotto7831a Geschrieben 22. Juni 2009 Geschrieben 22. Juni 2009 Theoretisch schon. Ist nur die Frage ob es schlimm ist. Wenn der letzte um 23:00 Uhr die Seite verläst und um 07:00 Uhr kommt der nächste Besucher, dann wird der von 23:00 Uhr automatisch gelöscht und der neue sieht nur das er online ist. Frank Zitieren
Kirby886 Geschrieben 22. Juni 2009 Autor Geschrieben 22. Juni 2009 Stimmt schon, als Perfektionist akzeptiert man sowas aber erst, wenn man keine bessere Lösung mehr findet. Werds wohl so umsetzen, danke für deine Hilfe! Schönen Abend noch! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.