www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Implementation eines Web-Zählers

Motivation

Web-Counter kennen wir alle. Das sind die kleinen Bildchen, die eine mehr oder weniger große Zahl anzeigen, die bei jedem Zugriff erhöht wird. Auf dieser Seite werden wir uns die Implementation eines solchen Zählers genauer anschauen. Sie ist aufgrund vieler Design-Entscheidungen nicht immer so naheliegend wie es zunächst den Anschein hat!

Der primitivste Zähler

Programm counter1.pl zeigt einen primitiven Zähler, der auf dem CPAN-Modul File::CounterFile beruht.

Was geschieht nun hier genau?

Ein DBI-basierter Zähler

In counter2.pl wird ein DBI-basierter Zähler vorgestellt, der mit Hilfe von Tie::RDBM realisiert wird. Dieses Persistenz-Modul wurde in Kapitel 18 vorgestellt, wobei eine komplette Anwendung im Beispielprogramm db-tierdbm.pl zu finden war.

Im folgenden Beispiel werden wir mehr Statistiken als nur einen einfachen Zähler sammeln und werden dann in der Lage sein, einen komplexeren Zähler zu implementieren.

Ein komplexerer Zähler

Wir wollen also mehr Daten sammeln und einen komplexeren Zähler realisieren. Überlegen wir uns daher erst, was dieser Zähler leisten soll. Eine mögliche Anforderungsliste lautet:

Hier sind mehrere Design-Entscheidungen notwendig. Eine naheliegende Implementation würde eine DBI-Datenbank als Backend verwenden. Darauf werden auch wir uns einlassen. Die wesentliche Frage ist aber nun, welche Daten bei jedem Treffer zu sammeln sind. Zwei mögliche Richtungen sind:

Welche Strategie wollen wir nun verfolgen? Beide haben jeweils Vor- und Nachteile:

Welche Strategie wollen wir nun verfolgen? Das hängt natürlich von den Umständen ab. Vom Gefühl her, würde ich mehr zur zweiten Lösung tendieren und diese werden wir im folgenden auch implementieren.

Wir entscheiden uns also für eine Datenbanktabelle, die aus folgenden Feldern besteht:

Weitere Felder sind ebenfalls denkbar. Sie können nach Wunsch diese Tabelle erweitern, sollten dann aber das entsprechende Programm ebenfalls aktualisieren.

Nun haben wir die Tabelle auf einer logischen Art beschrieben. Wir werden im folgenden aber diese Tabelle mit Hilfe von Tie::RDBM implementieren. Das ist dank Storable möglich, wie es in Kapitel 18 gezeigt wurde.

Schauen wir uns erst an, wie counter3.pl aufgerufen werden kann:

Schauen wir uns nun die Implementierung von counter3.pl näher an!

Unser counter3.pl könnte noch verbessert werden. Insbesondere leidet dieses Programm noch unter einer längeren Startzeit, da erst eine Verbindung zur Datenbank hergestellt werden muß. Mit Hilfe von mod_perl und Apache::DBI läßt sich dieses Problem jedoch leicht beheben.

[Prev] [Up] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:46 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo