Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Onlinetabelle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Onlinetabelle

    Hallo zusammen,

    ich habe mir eine tabelle in der SQL Datenbank erstellt, bei der jeder User der sich auf meine Seite einloggt erfasst wird. So sehe ich, wer gerade eingeloggt ist.

    Beim ausloggen wird der User aus der Onlinetabelle wieder gelöscht. Auch wenn der User nach 10 Minuten (meine Inaktivitätszeit) einen Link klickt und automatisch ausgeloggt wird, wird der Eintrag in der Onlinetabelle gelöscht.

    Frage: Wie lösche ich den Eintrag aus der DB wenn der User den Broweser einfach schließt???

    Gruß,
    Carsten

  • #2
    per JavaScript mit unload() ein PHP-Skript ausführen und die Session löschen <- unschön und nicht zu empfehlen
    per CronJob jede Minute (als Beispiel) inaktive sessions löschen <- vernünftig


    ...gehört aber eigentlich nicht ins PHP-Profi-Forum

    Kommentar


    • #3
      Und wie richte ich so einen cron-job ein???

      Hast du mir da ein Beispiel?

      DANKE

      Kommentar


      • #4
        http://www.google.de/search?q=cronjo...le-Suche&meta=
        Ergebnisse 1 - 10 von ungefähr 2,770 für cronjob einrichten. (0.17 Sekunden)

        mehr sog i net....

        Kommentar


        • #5
          okay, klar, dass kann ich nachlesen.

          Aber gibt es keine andere Möglichkeit das Problem zu lösen? Nicht auf dem Webserver sondern über meine Anwendung.

          Verstehst du was ich meine?

          Die Anwendung soll selbst merken wann der Eintrag aus der Online-Liste entfernt werden kann.

          Kommentar


          • #6
            ja, die Möglichkeit gibt es.. die fällt jedoch unter die gleiche Kategorie wie die mit JavaScript... das einzig sinnvolle und vernünftige ist die Lösung per Cron. Es sei dem, du lässt das Löschen der abgelaufenen Sessions bei der Überprüfung anderer User miteinbeziehen... aber was machst du, wenn keiner deine Seite besucht? Für die Zeit hast du immer ein paar Session-Leichen rumliegen... auch unschön...

            Kommentar


            • #7
              Zitat von cretter
              Die Anwendung soll selbst merken wann der Eintrag aus der Online-Liste entfernt werden kann.
              Ist doch keine Hürde, vor allem anderen Zeuch verfallene Sessions in der Usertabelle zu löschen. Bringt natürlich nur dann Punkte, wenn Du bei "jedem Besuch" einen neuen timestamp in der Tabelle setzt.

              Kommentar


              • #8
                Also jedesmal wenn ein User irgendwo klickt wird derzeit ein Timestamp in die session gelegt. So kann ich überprüfen ob jemand mehr als 10 Minuten irgendwo nicht mehr geklickt hat. Dann wird er automatisch ausgeloggt.

                Du meinst also, dass ich diesen Timestamp auch in die Session schreiben sollte, und dann bei jedem Seitenaufruf die komplette Onlinetabelle auslesen soll und ausrechnen soll ob alle Timestamps noch gültig sind?

                Ist das nicht ein zu großer Aufwand?

                Kommentar


                • #9
                  Hallo!

                  Ich habe ein ähnliches Problem ganz einfach gelöst (allerdings mit MySQL-Tabelle):

                  Code:
                  "DELETE FROM `tabelle` WHERE `gueltigbis` < '" . time() . "'"
                  Wird bei jedem Start aufgerufen und ist eigentlich zuverlässig.

                  KMAssS

                  Kommentar


                  • #10
                    also ich hab 3 felder für den online status:
                    last_login
                    last_logout
                    last_click
                    mein query sieht so aus
                    Code:
                    $online_SQL="SELECT * FROM user WHERE last_login>last_logout AND last_click>$now-300";
                    so wird jeder der sich nicht ausgeloggt hat und in den letzten 5 min. was gemacht hat als online bewertet
                    $now wurde vorher der wert time() zugewiesen

                    Kommentar


                    • #11
                      Zitat von cretter
                      Also jedesmal wenn ein User irgendwo klickt wird derzeit ein Timestamp in die session gelegt. So kann ich überprüfen ob jemand mehr als 10 Minuten irgendwo nicht mehr geklickt hat. Dann wird er automatisch ausgeloggt.
                      Nicht in der Session sondern in einer *SQL Usertabelle.

                      Kommentar


                      • #12
                        Zitat von kmasss
                        Wird bei jedem Start aufgerufen und ist eigentlich zuverlässig.
                        Wenn du viele Besucher hast, die da hin kommen und übernacht sich richtig viele angesammelt haben, kann einer am nächsten Tag alles wegkehren.
                        Na, der wird sich freuen

                        Kommentar


                        • #13
                          Zitat von Jojo
                          Wenn du viele Besucher hast, die da hin kommen und übernacht sich richtig viele angesammelt haben, kann einer am nächsten Tag alles wegkehren. Na, der wird sich freuen
                          Kein Problem:
                          Code:
                          DELETE FROM usertabelle WHERE NOW() > DATE_ADD(last_connect, INTERVAL 1 HOUR);
                          Und schon ist das alte Zeuch weg... :wink:

                          Kommentar


                          • #14
                            Danke für eure Hinweise und Tipps.

                            So wie ich das grad sehe werden dann bei jedem Klick meines Users 2 SQL Abfragen ausgeführt.

                            1. Zum einen wird die Gültigkeitsdauer der Session erneuert
                            2. Werden alte Einträge aus der DB geöscht.

                            Ist das nicht zuviel DB-Traffic bzw. Zeit die da flöten geht?

                            Kommentar


                            • #15
                              Zitat von Jojo
                              Wenn du viele Besucher hast, die da hin kommen und übernacht sich richtig viele angesammelt haben, kann einer am nächsten Tag alles wegkehren.
                              Na, der wird sich freuen
                              1. hat der dann halt Pech :wink: und 2. ist das nur so, wenn alle nächtlichen Besucher auf einmal aufhören, meine Seiten zu laden!

                              Außerdem geht das glaube ich nicht soooo viel länger, wenn der da jetzt viel oder wenig löscht. Naja, meine Seite hat ja sowieso noch nicht mal 100 Besucher am Tag

                              KMAssS

                              Kommentar

                              Lädt...
                              X