PHP, jeden Seitenaufruf speichern?

3 Antworten

Mit Cookies. ;) Deswegen sind die Einstellungen auch alle auf 0, wenn du den Verlauf und vor allem die Cookies löscht. Die Seite greift danach auf den Cookie zu und liest passendes aus.

Andersweitig, kannst du es natürlich über ein Login-Bereich machen. Dann speicherst du in einer Datenbank alle Bewegungen des Users ab.

habibo385 
Fragesteller
 05.08.2014, 14:23

Ich meine ja nicht die Nutzer spezifischen Daten sondern einfach die Aufrufe insgesamt. Also z.B. 7.000 Hits in den Letzten 7 Tagen, 1.000 Hits in den letzten 24 Stunden. Das kann man ja theoretisch sehr einfach realisieren aber wenn man jeden Aufruf mit Zeitpunkt und Ort (also z.B. URL) speichert ist das doch sehr ressourcenintensiv, und geht auf den Speicher? Wie wird das in der Realität gemacht?

0
Pacefalcon  05.08.2014, 15:01
@habibo385

Das löst du über eine Datenbank, dann wird das nicht allzu Ressourcen intensiv.

Ganz einfach wäre einfach eine Zeile mit URL und Zähler. Jedesmal, wenn einer auf die Seite zugreift, wird der zähler hoch gesetzt.

Auf deinem Beispiel hingegen wird das über mehrere Tabellen gelöst. Du hast eine Tabelle mit der URL und einer ID. Diese Tabelle vergrößert sich nur, wenn du in die Tabelle mehr URLs hinterlegst. Bei der zweiten Tabelle wird dann die ID der URL (Eine 512 kostet weniger Ressourcen als die ganze URL). Theoretisch könntest du jetzt auch noch eine dritte anlegen mit Datum und einer passenden ID. Wird dann aber ein wenig zu Detailreich.

Jetzt kommt es auf den Zeitinterweil an. Hier reicht jede Stunde. Also wird für ein neuer Eintrag hinterlegt mit der

  • URL ID | Datum u Zeit | Zähler |

Damit hast du nur 24x7xAnzahl der URL Einträge.

In der Abfrage (für die Ausgabe der Zahlen) wird dann einfach nur nach dem Zeitraum abgefragt. (SQL-Abfrage) In der du alle Besucher einer URL zusammenzählen lässt innerhalb der letzten 24 Stunden, oder der letzten 7 Tage.

Dafür brauchst du dann auch keine neuen Einträge machen sondern, kanns einfach die Abfrage umstellen.

Schau dir dazu mal die "Relationale Datenbank" an. ;)

0
cat64k  05.08.2014, 15:14

Hallo Pacefalcon.

leider ist deine Antwort völlig falsch. Du kannst keinen Zugriffszähler über cookies realisieren. Dazu sollte man erstmal wissen, was ein Cookie ist:

Ein Cookie ist ein Objekt, wo man Daten auf dem Rechner des Anwenders speichert. Diese Cookies werden dann bei jedem Aufruf innerhalb der (Sub)Domain mitgesendet und die Internetseite kann die entsprechenden Informationen verarbeiten (zum Beispiel persönliche Einstellungen verwalten oder das Sessioncookie auslesen, oder zum Beispiel automatische login-Daten generieren

Nun ist das aber so, das der Server nur zugriff auf die Cookies hat, wenn gerade der Anwender gerade zugreift.

Also für einen Zähler ist das völlig ungeeignet. Das einzige was darunter speicherbar wäre, die letzten Zugriffe des users zu speichern oder sowas, aber nicht die gesamtzahl der zugriffe.

0
Pacefalcon  05.08.2014, 15:44
@cat64k

Ich weiß was ein Cookie ist und das man darüber keinen Zähler realisieren kann.

Von seiner Fragestellung aus, was es erst nicht ersichtlich. Als er dann das mit Zähler schrieb, habe ich wohl vergessen zu schreiben, dass es hier natürlich nicht via Cookie geht. Das hab ich dann wohl vergessen zu schreiben.

Ein Counter muss natürlich im Quelltext mit hinterlegt sein.

Danke für das Aufmerksam machen.

Gruß Stephan.

0
phitosch923  06.08.2014, 13:29
@cat64k

Ein Cookie ist kein Objekt. Ein Cookie ist eine Datei. Aber du hast Recht. Und wenn schon browserseitig, dann wenigstens HTML5 WebStorage.

0

Ich sage jetzt mal nicht direkt wie es geht. Aber wie würdest Du es denn machen, wenn es nicht digital wäre? Wie würdest Du das machen, wenn Du einen Imbiss hättest und würdest messen wollen, welche Produkte am beliebtesten sind? Dann ist dir die Antwort natürlich klar. Und genauso macht man es eben auch in der digitalen Welt. Wie man soetwas realisiert ist verschieden. Das kommt darauf an, ob Du eine Datenbank hast oder nicht, ob dein Server PHP unterstützt etc. Du musst diesen ganzen Vorgang in jedem Fall serverseitig ausführen. Nichts mit Cookies, nichts mit Javascript und auch nichts mit HTML. Externe Skripte würde ich nicht einbinden, weil diese eigentlich immer gegen den deutschen Bestimmungen zum Datenschutz widersprechen. Wenn du eine mysql-Datenbank hast und PHP, dann empfehle ich dir einfach mal folgenden Link:

http://stackoverflow.com/questions/1564772/page-views-counter-using-php-and-mysql

(Lösung mit oo PHP und einer MySQL Datenbank)

Dort steht eigentlich alles, was du wissen musst, WENN Du das mit PHP und MySQL lösen willst. Natürlich kannst du auch so etwas mit C oder Java oder Ruby oder sonst was machen. Ich weiß nicht wie dein System aussieht und wie deine Fähigkeiten aussehen.

Im Übrigen speichert man nicht jeden Aufruf mit Zeitstempel und Content-ID. Man setzt natürlich den Counter hoch zu einer bestimmten ID. Und dann splittet man die Daten für bestimmte Monate, Wochen oder Tage. Alles andere wäre ja wohl ein bisschen beknackt. Sonst hast du ja nach einem Monat eine riesige Datenbank. Meine Seiten haben ca. 30.000 Impressionen ab Tag. Das wären ja schon mit Hashing des Users, Zeitstempel, Content-ID ca. 5 GB pro Monat. Da kann man bei einer relationalen Datenbank nicht mehr anständig Joinen. Das wäre sozusagen der Overkill für ein so kleines Feature.

Ansonsten rate ich dir zu einem PHP, MySQL Freelancer, der macht dir das in 20-30 Minuten. Und das kostet dich dann 50 Euro. Wenn du natürlich selber programmieren willst, dann lies die Beiträge auf stackoverflow. Das ist ein Forum für Programmierer. Ich denke, dass deine Frage für gf sowieso schon etwas zu schwer ist.

Das geht übrigens auch komplett ohne Datenbank zu realisieren - einfach die access-Logs mit nem einfachen Script durchforsten ;)