Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Datenspeicherung einfacher Counter
Antwort
 
Themen-Optionen
Alt 11.08.2006, 15:30   Nach oben    #1
Benutzer
 
Registriert seit: 28.12.2005
Beiträge: 35
Standard Datenspeicherung einfacher Counter

Hallo zusammen,

ich bastle grad an einem kleinen Versuchsprojekt - wie schon in der Überschrift zu lesen, an einem Counter. In diesem Fall geht es um einen kleinen einfachen Multicounter (Counterdienst).

Die Thematik Anmeldung und optische Ausgabe ist erstmal völlig egal. Mir geht es primär um die möglichst einfach Datenspeicherung. Der Dienst soll keine ausführlichen Statistiken enthalten.

Mit folgenden Werten soll gearbeitet werden:

- Besucher gestern
- Besucher heute
- Besucher gesamt
- Besucher Online

Damit nicht jeder reload gezählt wird soll eine einfache IP-Reloadsperre eingebaut werden.

Nun stellt sich die Frage wie sowas performancetechnisch am besten hinzubekommen ist.

Meine Idee wäre hier nun mit 2 Tabellen zu arbeiten:

1. Tabelle für die Onlineuser und die Reloadsperre

Felder: ID (counter-ID), IP-Adresse, Timestamp

2. Tabelle für die Werte gestern/heute/gesamt

Felder: ID, gestern-tag, gestern-wert, heute-tag, heute-wert, gesamt-wert

So lange die Kombination ID + IP in Tabelle 1 schon vorhanden ist und der Timestamp nicht älter als X Minuten (Reloadsperre) ist, wird der Timestamp stetig mit erhöht und keine Veränderung in der zweiten Tabelle vorgenommen.

Bei den "Tag"-Feldern in der zweiten Tabelle kommt jeweils
der Tag (Datum) rein, für das der Wert gilt. Entspricht dieser Tag nicht mehr dem aktuellen Tag (für heute bzw. gestern), wird der Wert resettet und der aktuelle Tag reingeschrieben.

Soweit so gut - comments? hab ich was übersehen?

Nun stellt sich die Frage über die detaillierte Vorgehensweise...

Der erste Query muss prüfen ob die Kombination ID + IP in Tabelle 1 vorhanden ist und (wenn ja) wie alt der Timestamp ist. Wenns um das reine Vorhandensein (ohne Timestamp) ginge, würde ich das über "ON DUPLICATE KEY" lösen, aber wie bringe ich da den Timestamp unter?

Oder evtl. doch erstmal die User online auslesen mit "SELECT * FROM log WHERE ID = 'x' AND timestamp > 'y'" und dann per php prüfen und danach ggf. inserten/updaten?

Ich dreh mich bei meinen Überlegungen gerade etwas im Kreis und würd mich über einen Gedankenanstoß freuen.

Sorry wenn das alles komplett irsinnig erscheint, aber ich bin php-technisch immer noch sehr grün hinter den Ohren. Evtl. gibt's auch ne ganz andere Lösung dafür?

Danke!
lokari ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 15:35   Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von PaterNoster
 
Registriert seit: 18.08.2005
Ort: Dortmund
Beiträge: 166
Standard

Hast Du Dir das hier

http://forum.developers-guide.net/showthread.php?t=3338

schon mal angesehen? So als Inspiration...
PaterNoster ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 15:37   Nach oben    #3
Benutzer
 
Registriert seit: 28.12.2005
Beiträge: 35
Standard

nein, aber danke für den Hinweis.

Löst leider meine Probleme nicht, aber Inspiration kann ja nie schaden
lokari ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 17:37   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von lokari
So lange die Kombination ID + IP in Tabelle 1 schon vorhanden ist und der Timestamp nicht älter als X Minuten (Reloadsperre) ist, wird der Timestamp stetig mit erhöht und keine Veränderung in der zweiten Tabelle vorgenommen.
Da kann die Tabelle aber recht schnell sehr groß werden, wenn du mehrere Counter auf mehreren stark frequentierten Seiten hast.
Wollt ich nur mal so angemerkt haben.

Zitat:
Zitat von lokari
erstmal die User online auslesen mit "SELECT * FROM log WHERE ID = 'x' AND timestamp > 'y'" und dann per php prüfen und danach ggf. inserten/updaten?
Würde ich so machen, aber das heißt nix, da ich ne SQL-Niete bin.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 17:46   Nach oben    #5
Benutzer
 
Registriert seit: 28.12.2005
Beiträge: 35
Standard

Zitat:
Da kann die Tabelle aber recht schnell sehr groß werden, wenn du mehrere Counter auf mehreren stark frequentierten Seiten hast.
Wollt ich nur mal so angemerkt haben.
da hast Du im Prinzip natürlich recht, wobei ich ja keinen Eintrag brauche der älter ist, als die Reloadsperre lang insofern stündlicher cleaner-Cron und alles is gut, oder?

Zitat:
Würde ich so machen, aber das heißt nix, da ich ne SQL-Niete bin.
mir ging's dabei auch eher um's Prinzip als um das SQL-Statement
lokari ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 18:19   Nach oben    #6
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von lokari
wobei ich ja keinen Eintrag brauche der älter ist, als die Reloadsperre lang insofern stündlicher cleaner-Cron und alles is gut, oder?
Klar, wenn du das so regeln kannst ist das natürlich im Rahmen.

Bzgl. SQL-Statement.
Ich wollte damit aussagen, dass ich keine SQL-Lösung dafür kenne, so dass ich letztlich den Weg übr PHP gehen würde.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
frage zu counter kampfgnom JavaScript und AJAX 10 01.06.2007 20:46
Logfile Analyse oder Counter cspiegl Tools, Server, Betriebssysteme 6 13.01.2007 14:51
[PHP] Counter mit mysql (kurz und knackig) Jann Hendrik Tutorials 6 13.11.2006 08:45
Counter michi Gesuche 29 23.07.2006 21:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44