Rolf: Diskussion Klickzaehler

Beitrag lesen

Hallo, es muss am Wetter liegen: Regentropfen on my Window klopfen PERL'len builden sich ;-) .. ist das folgende Script ok? Wenn ja, wer's braucht nehme es und lasse es auf seiner Site brummen ODER schreibe hier seine Kritik! ; Viele Grüße, Rolf
***

Klicks auf einen Link zählen und umleiten auf Link-URL

Script Name: "klick_redir.pl"

Anstelle der Referenz auf den Link folgendes in der HTML-Datei notieren

a href="/cgi-bin/klick_redir.pl"

Beginn Konfiguration

wohin umleiten, kompletter http-Pfad

$link = "http://www.i-netlab.de";

Absoluter lokaler Pfad zum Verzeichnis des Klickzählers, kein Slash am Ende

$local_dir = "/home/i-netlab.de";

Name der Zählerdatei die Datei von Hand anlegen

$count_file  = "count.dat";

Name der Sperrdatei, verhindert Mehrfachzugriff auf "Zählerdatei"

$lock_file = "count.lock";

Ende Konfiguration

Aufruf der Funktionen

&count; # erst Zählen...
&redir; # dann Umleiten & Tschuess

Sub-Funktionen...

Die Zählfunktion

sub count{
my $cx;
my $timeout = 10; # Sekunden warten auf Freigabe einer vergessenen Sperre
my $lockfile = "$local_dir/$lock_file";
my $countfile = "$local_dir/$count_file";

Prüfen ob eine Sperre vorliegt, ggf. Sperre setzen

while(-e $lockfile && ( stat($lockfile))[9] + $timeout > time ){
  sleep(1);
}
open LOCK, ">$lockfile" die "$!";

CountFile zum Lesen und Schreiben öffnen

open (CF, "+<$countfile") die "$!";
seek (CF, 0, 0);
$cx = <CF>;
$cx++;
seek (CF, 0, 0);
print CF "$cx\n";
close CF;

Sperre wieder aufheben

close LOCK;
unlink($lockfile);
}

Die Umleitfunktion

sub redir{
use CGI;
my $q = new CGI;
print $q->redirect($link);
}