Denkfehler bei user online script

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

  • Denkfehler bei user online script

    Hallo, ich habe ein Problem mit einem Useronlinescript bzw einen Denkfehler, weiß aber nicht wie ich ihn beseitigen kann.
    Ich habe eine Tabelle, wo ich eine ID (Primarey Key) ip und Datum mit genauer Uhrzeit eintrage.
    Die IP wird jeweil für eine Stunde gesperrt. Eine useronlinefunktion soll
    die User der letzten 15 Minuten anzeigen. Dabei tritt das folgende Problem auf.


    Es ist 10:00:00 uhr vormitags. Jemand kommt auf die Seite, seine IP WIRD eingetragen
    und gleichzeitig für die kommenden 60 Minuten gesperrt(Reloadsperre).



    ES ist 10:00:01
    Der user WURDE nun vor einer Sekunde eingetragen und gesperrt. in den letzten 15 Minuten war ein user online.
    Es wird 1 ausgegeben.


    10:14
    Dasgleiche wie bei 10:00:01

    10:16

    Der user ist immernoch auf der Seite und natürlich immernoch bis 11:16 (1h)gesperrt,
    jetzt kommt es zu dem Problem, das 0 user angezeigt
    werden, da der User ja um 10:00:00 eingetragen wurde und somit mehr als 15 minuten
    vergangen sind. Die Funktion useronline zeigt ja immer nur die Onlineuser zwischen now() und den letzten 15 Minuten an.

    Wenn die Useronlinefunktion alle Leute der letzten stunde anzeigen würde, wäre das alle kein Problem. Ich möchte aber die User der letzten 15 minuten ausgeben.

    gibt es eine Lösungsmöglichkeit, wie ich das Problem mit der Tabellenstruktur
    ID,IP, DAtUM lösen kann?
    grüße Zabarax

  • #2
    die anzeige lassen wie sie ist, zeige alle user an, die in den letzten 15 minuten online waren...
    immer wenn ein user etwas auf der seite ansurft den eintrag in der db mit replace oder update erneuern.
    alle einträge die älter als 60 minuten sind löschen
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      solange der User kein Request innerhalb deiner festgelegten Zeit auslöst, no way.

      Kommentar


      • #4
        Original geschrieben von MelloPie
        die anzeige lassen wie sie ist, zeige alle user an, die in den letzten 15 minuten online waren...
        immer wenn ein user etwas auf der seite ansurft den eintrag in der db mit replace oder update erneuern.
        alle einträge die älter als 60 minuten sind löschen
        Das wäre eine Möglichkeit. Hat aber für mich zwei Nachteile.
        1) Ich wollte es so machen, daß die Tabelle quasi so eine art Logfile ist, wo man sehen kann welche IP, wann die Seite besucht hat, also kann ich da schlecht was replacen.
        2) Nur die Indexseite ist MIT PHP gemacht, alles andere ist statischer HTML code. Das bedeutet natürlich auch, das nur zugriffe auf die Indexseite geloggt werden und die Statistik ungenau ist.

        Wenn ich es mit replace/update machen würde, hätte das aber den Nachteil das bei jedem Request an den server jedesmal auf die DB zugegriffen wird ,nur für so simple sachen wie counter/useronline.
        Ist das nich ein bischen übertrieben so oft auf die DB einzutragen??

        Nach euren Anregungen würde mir da nur einfallen, eine zweite Tabelle für Useronline zu nehmen. So etwa wie das hier.
        http://tut.php-q.net/online.html

        Kommentar


        • #5
          hmm...du hast die möglichkeit alle html-seiten umzubauen und natürlich um die letzte handlung festzustellen wirst du nicht drum rum kommen, noch eine spalte zb "lastaction" anzulegen und die dann immer upzudaten

          Kommentar

          Lädt...
          X