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

Seitenzugriffe mit der PageCounter Komponente erfassen

Geschrieben von: Christian Holm
Kategorie: ASP Grundlagen

This printed page brought to you by AlphaSierraPapa

Um die Popularität Ihrer Website zu überprüfen, können Sie auf den Seiten Ihrer Site einen Page Counter (Zähler) einsetzen, der die Clientzugriffe mitloggt. Natürlich gibt es eine Vielzahl von Drittanbieter die dieses Feature zur Verfügung stellen. Dabei müssen Sie wieder ein fremdes Script in Ihre Seite einbinden, sich lästige Werbung gefallen lassen - von Konfigurationsproblemen ganz zu schweigen.

Warum sollte man also auf solche Angebote ausweichen, vor allem dann, wenn der Internet Information Server (IIS) eine kleine ASP-Komponete zur Verfügung stellt, die sich einfachst einbinden läßt - die PageCounter Komponente. Diese läßt sich leicht konfigurieren und mit ein bischen Code sogar professionell aufpeppen.

Die Page Counter Komponente ist bereits ab dem Internet Information Server (IIS) Version 4 verfügbar (IIS Resource Kit), und wird bei Windows 2000 Internet Information Services standardmäßig mitinstalliert.

Verwendung der PageCounter Komponente

Die PageCounter Komponente zählt die Zugriffe auf eine ASP Seite und kann die Gesamtstatistik auf derselben oder einer anderen Seite wieder ausgeben. Innerhalb bestimmter, regelmäßiger Intervalle schreibt das Objekt die Pagehits in eine Textdatei (die sogenannte Hit Count Data Datei), damit diese Daten auch über Serverrestarts verfügbar bleiben.

Für Programmierer als auch Administratoren ist es natürlich gut zu wissen, wo diese Hit Count Data Datei gespeichert wird (etwaige Zugriffsrechteprobleme könnten mit der Standardeinstellung entstehen), sowie wie oft die Counter dort gespeichert werden (bei vielen Seiten mit hoher Zugriffsfrequenz sollte man das Intervall erhöhen).

Diese Informationen (Speicherort und Speicherfrequenz) werden in der Registrierdatenbank des Servers abgelegt. Der Pfad ist HKEY_CLASSES_ROOT\MSWC.PageCounter (siehe Bild).

Die beiden Schlüsselwerte, die man verändern kann, sind hier beschrieben:
WertBeschreibung
File_Location

Dieser Wert gibt den Pfad und den Dateinamen der Hit Count Data Datei an. Standardmäßig wird der Dateiname Hitcnt.cnt verwendet und ist im Data Verzeichnis des IIS zu finden (wie gesagt, dies könnte ein Berechtigungsproblem für IUSR_machinename sein).

Save_Count

Enthält die Anzahl der Pagehits bevor sie in der Hit Count Data Datei gespeichert wird (=das Maximum an Hits die verloren gehen würden, falls der Server vorher abstürzen würde). Der Wert ist vom Datentyp ein DWORD (Double Word), und standardmäßig auf 25 gesetzt.

Beachte: Dieser Wert entspricht der Gesamtanzahl der Pagehits über den gesamten Server, und nicht der Anzahl von Treffern pro Internetseite.

Da wir jetzt alle funktionalen Details geklärt haben, können wir nun zum Programmieren kommen. Wenn man die PageCounter Komponente nun verwenden möchte, so hat man drei Methoden zur Verfügung

Mit diesen Information wollen wir uns nun auf Beispiele stürzen.

Auslesen und Erhöhen von Page Counts

Dieses Beispiel verwendet die PageHit und Hits Methoden der PageCounter Komponente, um die Anzahl der Besucher zu ermitteln (countertest.asp).

<% @LANGUAGE="VBSCRIPT" %>
<% 
Option Explicit 
Response.Expires = 0
%>
<html>
<head>
	<title>PageCount'd Page</title>
</head>
<body bgcolor="#ffffff">
<p>
Zählen der HitCounts mit Hilfe der Hits-Methode:
<%
Dim PgeCount
Set PgeCount = Server.CreateObject("MSWC.PageCounter")
PgeCount.PageHit
%>
Diese Website wurde 
  <b><%= PgeCount.Hits %></b> 
Mal besucht.
</p>

<p>
Ausgabe Counter für beliebige Seite:
Die Seite prettyscript.asp wurde 
  <b><%= PgeCount.Hits("/aspheute/prettyscript.asp") %></b>
Mal besucht.
</p> 

<%
Set PgeCount = Nothing
%>

</body>
</html>

Wie man im Beispielcode sehen kann, verwende ich die Hits Methode einmal ohne, als auch einmal mit Parameter. Der optionale Parameter gibt eine beliebige Datei an, von der der Hit Count ermittelt werden soll. Falls der Parameter nicht gesetzt ist, dann wird der Hit Count der aktuell ausgeführten Seite ausgegeben.

Der Rückgabewert der Hits Methode entspricht der Anzahl an Hit Counts und hat den Datentyp Long.

Wie komme ich aber nun zu meinem Hit Count - sprich, wie erhöhe ich die Anzahl der Zugriffe? Das erledigt die Methode PageHit für uns - sie erhöht den Hit Count der aktuellen Webseite um eins (1). In diesem Beispiel mache ich es sofort nach der Instanzierung des MSWC.PageCounter Objekts.

Hit Counts zurücksetzen

Hier kommt uns die dritte Methode - die Reset Method - zu Hilfe. Sie setzt beliebige Zugriffszähler auf 0 zurück. Auch diese Methode hat einen optionalen Pfadparameter, der auch wie bei Hits dazu verwendet werden kann, um beliebige Zähler zurückzusetzen.

Das nun folgende Beispiel setzt den Zähler der aktuellen Seite und für eine externe Datei auf 0 zurück (counterreset.asp).

<% Option Explicit %>
<html>
<head>
	<title>Resetten der Page Counter</title>
</head>
<body bgcolor="#ffffff">
<% 
Dim PgeCount
Set PgeCount = Server.CreateObject("MSWC.PageCounter")
' Rücksetzung der aktuellen Seite
PgeCount.Reset
' Rücksetzung einer beliebigen Seite
PgeCount.Reset("/webroot/webseite.asp")
' ab jetzt sind alle Counter auf 0:
%>
<P>
Page Hits auf aktueller Seite: 
	<%= PgeCount.Hits %> <br>
Page Hits auf prettyscript.asp: 
	<%= PgeCount.Hits("/aspheute/prettyscript.asp") %>
</p>
</body>
</html>

Schlußbemerkung

Dieser Artikel beschreibt die Möglichkeiten der PageCounter Komponente mit ihren zur Verfügung gestellten Methoden. Hier wurde lediglich das Grundwissen zur Komponente vermittelt - durch zusätzliches Tuning läßt sich natürlich noch einiges verbessern (Statistiken über alle Seiten, Tagescounter, etc).

In den meisten Fällen kann man auf einen optischen Aufputz verzichten - was sicherlich das Tüpfelchen auf dem "i" ist, ist die graphische Auswertung der Page Hits.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000721.zip

 

©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.