dedlfix: Besuchercounter mit live Aktualisierung

Beitrag lesen

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.