Besuchercounter mit live Aktualisierung
Gino
- html
- javascript
- php
Hallo zusammen,
ich bin leider in Sachen Webdesign (HTML, PHP, CSS, JavaScript) kein Experte, weshalb ich mich mal an euch wende. Ich möchte gerne einen Besuchercounter für eine Webseite bauen. Hier gibt es ja schon einige fertige Lösungen, wenn man mal kurz googelt, jedoch stellen diese mich nicht zufrieden.
Der wichtigste Punkt, neben dem Zählen, den ich an den Counter habe ist, dass er live wenn man auf der Seite ist hochzählt und sich der Counter nicht erst nach einem refresh der Webseite verändert.
In der Theorie habe ich mir gedacht, dass bei jedem Aufruf der Seite ein Eintrag in einer Datenbanktabelle, via z.B. MySQL, geschrieben wird und dann einfach die Summe aller Tabelleneinträge abgefragt wird, was dann ja die Besucheranzahl ergibt. Jedoch sollte diese Besucheranzahlabfrage, sagen wird mal jede Sekunde einmal durchgeführt werden und nicht nur beim refresh der Webseite.
Mit HTML oder PHP ist dies denke ich nicht umsetzbar, aber vielleicht kann man ein JavaPlugin bauen, dass alle par Sekunden die Summe aller Datenbankeinträge abfragt.
Könnt ihr mir bitte sagen ob dies mit Java möglich wäre oder ob ihr vielleicht eine wesentlich besser Idee habt, wie man einen solchen live-Besuchercounter umsetzten kann.
Besten Dank schon mal!!
Gruß Gino
@@Gino
Ich möchte gerne einen Besuchercounter für eine Webseite bauen.
„Was wollen wir?“
„Besucherzähler!“
„Wann wollen wir die?“
„1995!“
Hier gibt es ja schon einige fertige Lösungen
Die Lösung ist einfach: Lass es. Fertig.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Tach!
Der wichtigste Punkt, neben dem Zählen, den ich an den Counter habe ist, dass er live wenn man auf der Seite ist hochzählt und sich der Counter nicht erst nach einem refresh der Webseite verändert.
Abgesehen davon, dass kein Besucher einen Besucherzähler vermissen wird, die Technik hinter deinem Wunsch kann man aber schon mal diskutieren.
In der Theorie habe ich mir gedacht, dass bei jedem Aufruf der Seite ein Eintrag in einer Datenbanktabelle, via z.B. MySQL, geschrieben wird und dann einfach die Summe aller Tabelleneinträge abgefragt wird, was dann ja die Besucheranzahl ergibt.
Soweit der serverseitige Teil zum Erfassen der Nutzer(anfragen).
Mit HTML oder PHP ist dies denke ich nicht umsetzbar, aber vielleicht kann man ein JavaPlugin bauen, dass alle par Sekunden die Summe aller Datenbankeinträge abfragt.
Java ist auch out, wenn es um Browser geht. JavaScript hingegen ist nach wie vor in. Und nun setzt das Grundlagenwissen ein, wie das Zusammenspiel zwischen Browsern und Server funktioniert. Normalerweise fragt ein Browser/Client beim Server an, der antwortet und dann ist die Sache erledigt. Der Server hat keine Möglichkeit, von sich aus mit den Clients Kontakt aufzunehmen. Meist blockieren auch Firewalls den ankommenden Verkehr auf der Clientseite, oder die dortigen Router wissen icht, wo ankommende Verbindungswünsche hingeshickt werden sollen. Zudem sind Browser auch nicht darauf ausgelegt, auf solche Verbindungswünsche zu lauschen. Damit ist es also einem Server unmöglich, die gewünschte Information zu verbreiten. Obendrein weiß der Server auch nicht, ob der Nutzer die Seite noch offen hat. Und das ist gleich noch das nächste Problem, denn du weißt am Server nicht, wer alles noch die Seite anschaut oder zumindest offen hat, um eine einigermaßen stimmige Auskunft zu geben. Du kannst höchstens definieren, dass ein Besucher als anwesend gilt, wenn sein jüngster Request noch nicht länger als 5 Minuten her ist, beispielsweise.
Die Initiierung des Informationsaustauschs geht also nur in der anderen Richtung. Der Client muss von sich aus nachfragen. Und das immer wieder, wenn die Anzeige aktualisiert werden soll.
Es gibt auch noch eine Technik namens Websocket, die eine quasi permanente Verbindung vom Client zum Server aufbaut. Über die kann man auch bidirektional Daten austauschen. Doch das mus auf dem Server entsprechend eingerichtet werden. Dafür reicht nicht einfach nur ein PHP-Script. Der Aufwand ist für einen Besucherzähler zu hoch.
Bleibt also nur die Polling-Technik. Unter dem Stichwort Ajax findet man dazu genügend Lesestoff. Darauf gehe ich jetzt erstmal nicht weiter ein. Jedenfalls, wenn der Client regelmäßig pollt, kann man den Besucher-noch-da-Timeout auch geringer ansetzen. Aber will man das, dass da ständig Requests gestellt werden und Datenvolumen langsam aber beständig aufgebraucht wird, für eine Information, die k(aum )einen interessiert?
dedlfix.
Hej Gino,
Zähler sind aus den Gründen, die dedlfix genannt hat (ist ein Besucher noch da? Ist es derselbe oder ein anderer, ist er wieder da (erneuter Besuch, der gezählt wird) oder immer noch da - muss also nicht noch einmal gezählt werden) immer nur mehr oder weniger genau.
Es gibt allerhand Wege Nutzer zu identifizieren und zu zählen. So eine Statistik ist hilfreich, um Veränderungen zu messen, vergleicht man aber die absoluten Zahlen der verschiedensten Anbieter (Awstats, piwik, analytics, Klicktracker und wie die alle heißen) sieht man trotz des immensen Aufwandes, der hinter solchen Lösungen steckt, dass die absoluten Zahlen teilweise erheblich voneinander abweichen.
Und das obwohl die so viele Informationen sammeln, dass die sich oft in juristischen Grauzonen tummeln, was den Datenschutz betrifft.
Darum: wenn der Server schon ein was zählt, dann ermittle so etwas wie Besucher/Stunde und fake den Zähler, indem du die aktuelle Besucherzahl einfach durch ein Skript in der Geschwindigkeit hochzählen lässt, wie es dem bisherigen Durchschnitt entspricht. Das ist angesichts der Tatsache, dass die Zahl eh nur geschätzt ist, genau genug.
Aber anhand der bisherigen Antworten siehst du vermutlich selber schon, dass das ganze Unterfangen nicht sinnvoll ist.
Zumal niemand die Zahlen einordnen kann (ist der angezeigte Wert nun viel oder wenig - das ließe sich ja nur aufgrund von Vergleichswerten sagen - die geben dir deine direkten Konkurrenten wohl kaum...)
Marc
Könnt ihr mir bitte sagen ob dies mit Java möglich wäre oder ob ihr vielleicht eine wesentlich besser Idee habt, wie man einen solchen live-Besuchercounter umsetzten kann.
http://selfhtml.bitworks.de/snippets/visitcounter/visitcount.php
und das Bild rufst Du dann per JS und timeout auf