Statistik: Unique Besuche(r) über IP und Zeitraum

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

  • Statistik: Unique Besuche(r) über IP und Zeitraum

    Hallo.
    Seit einiger Zeit entwickle ich aus Spass an der Freud ein (weiteres) mittlerweile recht umfangreich gewordenes Wordpress Statistik Plugin.

    Ein Problem verfolgt mich jedoch seit einigen Tagen: Gegeben ist eine MySQL-Tabelle mit (sehr vereinfacht) folgenden Spalten:

    Code:
    remote_addr ( ip ) | stamp ( timestamp von time() )| user_agent (aus $_SERVER )
    Diese Spalten werden nun bei jedem Aufruf einer Seite mit entsprechenden Daten gefüllt. Innerhalb der Statistik möchte ich gerne die einzelnen Besuche eines Client auslesen. Soweit so gut. Über DISTINCT(remote_addr) ist das nur in soweit möglich dass mir ALLE Besuche einer bestimmten IP zusammengefasst werden, was dazu führt dass mir Besuche über eine IP zu schiedenen Tageszeitpunkten trotzdem nur zu einem Besuch zusammengefasst werden.

    Frage: Ist es irgendwie mit einer solchen Tabelle möglich einzelne Besucher anhand IP UND timestamp zu Besuchen zusammenzufassen wenn sich z.B. der timestamp innerhalb von 10 Minuten nach dem ersten Auftreten eines user_agent befindet?

    Habe mittlerweile unzählige Variationen mit/ohne diverse Join-Varianten ausprobiert und bin langsam am Aufgeben, soweit reichen meine MySQL-Kenntnisse anscheinend leider doch noch nicht...oder stehe ich nur irgenwie vollkommen auf dem Schlauch?

    Würde mich über Hilfe freuen.

    Grüsse

    Cy
    Zuletzt geändert von cyw; 03.03.2007, 16:45.

  • #2
    SELECT DISTINCT remote_addr, timestamp FROM bla

    http://dev.mysql.com/doc/refman/5.1/...imization.html
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Ich glaube jetzt stehe ich wirklich auf dem Schlauch.

      Code:
      SELECT DISTINCT remote_addr, stamp,user_agent,... FROM ...
      ist ja eben die oben beschriebene einfache Möglichkeit welche ich NICHT benutzen möchte da mir dann gleiche IPs z.B. von heute um 1:00 Nachts und 12:00 Mittags zu EINEM Besuch zusammengefasst werden.

      Ziel ist es aber eben

      - die (gleichen) IPs
      - von 1:00 - 1:10 heute Nacht (beispielsweise)
      - und 12:00-12:10 heute Mittag
      - per Query als zwei unterschiedliche Besuche zu zählen.

      Trotzdem Danke, werde mich weiter durchs Netz/MySQL-Doku wühlen...
      Zuletzt geändert von cyw; 03.03.2007, 16:47.

      Kommentar


      • #4
        Gefunden habe ich bisher leider nichts, dafür <strike>zwei eigene</strike> einen eigenen Gedankengang:

        I) Wegeditiert, war Müll und im Prinzip das Gleiche wie II. nur mit eigener Tabelle

        II) Innerhalb der alten Datentabelle eine neue BOOL-Spalte is_new_visit, dann beim Parsen des stattfindenden Seitenaufrufes ein query
        Code:
        SELECT COUNT (*) 
        FROM tabelle 
        WHERE  
            remote_addr='aktuelle_remote_addr' AND 
            timestamp+600>=timestamp_jetzt
        Falls count>0 -> Client/IP innerhalb von 10 Minuten schonmal aufgetaucht ->
        UPDATE ... SET is_new_visit=FALSE...

        Falls count==0 -> Client/IP ist neuer Besucher ->
        UPDATE ... SET is_new_visit=TRUE...

        Nachteil(e): Neue BOOL-Spalte in Tabelle, 2 extra Queries (Select count und Update)
        Vorteil(e): Alles bleibt in einer Tabelle, BOOL Speicherplatzsparend, Query sollte zügig sein wenn KEY auf remote_addr und timestamp, Query relativ simpel, ist_neuer_besucher kann sofort und auch nachträglich verarbeitet werden da gespeichert als bool, abfrage der momentan in datanbank gespeicherten Anzahl 'echter' Besuche mit sehr einfacher Query möglich ("SELECT COUNT... FROM...WHERE is_new_visit=TRUE"), ebenso Anzeige momentaner 'echter' User-online etc...

        Bleibt nur das alte Problem mit den wechselnden IPs bei manchen Anbietern...

        So, jetzt muss ich erstmal darüber nachdenken/ausprobieren und eine Denkfehler ausmerzen - und da gibt es bestimmt welche...

        Grüsse
        Cy

        Kommentar


        • #5
          mach es doch einfach

          speichere in die tabelle noch jeweils eine UNIQUIE ID die du durch PHP generierst eventuell geht dabei auch die session ...

          wie genau du das anstellst überlass ich deiner fantasie
          Bitte Beachten.
          Foren-Regeln
          Danke

          Kommentar

          Lädt...
          X