Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Wieviele User sind online?

Geschrieben von: Christian Holm
Kategorie: ASP Grundlagen

Oftmals ist es bei einer Website interessant zu wissen, wieviele Benutzer gerade "gleichzeitig" auf der Site aktiv sind. Dies läßt sich unter Verwendung von Bordmitteln - Internet Information Services (Windows 2000) bzw. Internet Information Server (Windows NT) - leicht und ohne großen Aufwand realisieren. Dieser Artikel zeigt Ihnen anhand eines einfachen Beispiels einen Lösungsansatz.

Da sich dieser Artikel nur mit einer Lösung beschäftigt, geht dieser nicht näher auf die verwendeten Technologien ein. Hintergrundinformationen zu diesen finden Sie in den (sehr ausführlichen) Artikeln Global.asa: Verwendung, Events und Probleme und Session Variablen - Verwendung und Stolpersteine.

Um die gleichzeitige Anzahl der Benutzer einer Website zu zählen, müssen Sie zunächst die global.asa Datei editieren, beziehungsweise erst erstellen. Diese liegt (meist) im Starting Point einer Website, also im Rootverzeichnis der Website. Da alle ASP Seiten einer Website in einer Application laufen, können diese somit auf eine gemeinsame global.asa zugreifen und die gleichen Application- als auch Sessionvariablen nutzen

Die tatsächliche Lage des Starting Points einer Website finden Sie im Internet Services Manager, indem Sie auf die Eigenschaft der jeweiligen Website klicken. Im Home Directory Tab finden Sie unter Application Settings den Eintrag Starting point:

Genug Konfiguration(-stheorie). Zum ASP Sourcecode. Für dieses Besipiel habe ich eine Minimalversion einer global.asa herangezogen. In dieser werden wir nun die notwendigen Änderungen vornehmen, damit der Usercounter einsatzbereit wird:

<script language="VBScript" runat="SERVER">
Sub Session_OnStart()
   Application.Lock
     Application("ConcurrentUsers") = Application("ConcurrentUsers") + 1
   Application.Unlock 
End Sub

Sub Session_OnEnd()
   Application.Lock
     Application("ConcurrentUsers") = Application("ConcurrentUsers") - 1
   Application.Unlock
End Sub 
</script>

Für das heutige Artikelbeispiel sind nur die beiden Prozeduren Session_OnStart und Session_OnEnd von Interesse. Diese kommen zum Einsatz, wenn ein Benutzer die für ihn erste Seite der Website aufruft (Session_OnStart) bzw. sie entweder durch Session.Abandon verläßt oder der voreingestelte Scripttimeout überschritten wird.

Mit Hilfe der Application Variable ConcurrentUsers speichern wir einfach die Anzahl der gleichzeitigen User. Die Anzahl wird immer dann erhöht, wenn ein neuer Benutzer seine erste Seite auf unserer Site aufruft - und somit die Session_OnStart Prozedur aufgerufen wird.

Die Prozedur Session_OnEnd wird dann aufgerufen, wenn ein Besucher die Site verläßt: entweder explizit per Session.Abandon, oder wenn das Scripttimeout überschritten wird. Daher wird in diesem Fall der Counter um Eins reduziert.

Damit hätten wir eine immer aktuelle Applikationsvariable mit der Anzahl der Benutzer. Nun sollten wir diese Information auch unseren Benutzern zugänglich machen. Dies ist auch nicht weiters schwer, und läßt sich mit einem Response.Write erledigen (test.asp):

Response.Write "Online Users: <b>" &  Application("ConcurrentUsers") & "</b>" 

Wenn Sie nun diese Testseite in einem Browser ausführen, und Sie der einzige Benutzer sind, dann erhalten Sie folgendes Ergebnis:

Je mehr User auf diese Seite zugreifen, desto größer wird klarerweise der Wert der Applicationvariable. Um zu verhindern daß bei großem Andrang durch Concurrency Fehler in der Zählung der Benutzer auftreten, verwende ich Application.Lock und Application.Unlock. Dadurch garantiere ich dem aktuellen ASP-Thread die Alleinrechte, die Applikationsvariablen zu verändern - und niemand anders kann dazwischenfunken.

Schlußberkung

Dieser Artikel ist ein HowTo wie man einfach einen Online-Usercounter für Webseiten implementiert. Die vorgestellte Lösung ist zwar wirklich einfach, aber gibt ausreichend Aufschluß über die Popularität einer Website. Natürlich läßt sich der Sourcecode noch um einiges erweitern, so z.B., daß die Werte zwecks statistischer Auswertung in einer Datenbank gespeichert werden.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Global.asa: Verwendung, Events und Probleme
Session Variablen - Verwendung und Stolpersteine

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.