Hi,
1. Ich muss feststellen, von welcher HTML-Datei aus der Counter aufgerufen wird.
ich habe das bei mir gelöst, indem ich einfach counter.pl?page=Seitenname aufrufe. Den Seitennamen setze ich so, wie ich will, also nicht als URL. Das macht die Zeilen in der Zählerdatei nebenbei noch kürzer. Wie man das mit der aufrufenden Datei macht kann ich Dir leider auch nicht sagen, aber ein Counter (inzwischen countermania.de) hatte das mal versucht und arge Probleme damit gehabt, weil einige Browser den HTML-Referrer zurücklieferten, also das was document.referrer ist. Wenn Du einen Parameter benutzt ist der Code zwar nicht so einfach in andere Seiten zu kopieren, aber es funktioniert alles besser...
2. Wenn ich dann das Problem mit dem Referrer geloest habe, stehe ich vor einem neuen: Nehmen wir mal an, dass zwei HTML-Seiten fast gleichzeitig aufgerufen werden, und dann fast gleichzeitig der Counter aufgerufen wird, dann laufen doch zwei Perl-Prozesse unabhaengig voneinander, oder? Dann kann es passieren, dass die beiden sich bei ihrem Datei-Lesen/Schreiben in die Quere kommen, und im schlimmsten Fall die ganze counter.dat zerschiessen. Man muesste also die Prozesse irgendwie synchronisieren, damit sie nicht gleichzeitig auf die Datei zugreifen.
Oh, ein leidiges Thema... Also, folgendes Verfahren ist ausgetestet und relativ sicher, aber eben auch nicht absolut:
1.) Vor dem Lesen der Datei $filename prüfst Du
while (-e "$filename.flock" && $flockcount < 5000) { $flockcount++; }
2.) Vor dem Schreiben der Datei $filename erstellst Du $filename.flock mit einem Dummy-Wert:
open(FLOCK,"$filename.flock");
print FLOCK "1";
close(FLOCK);
3.) Nach dem Schließen der Datei $filename führst Du system("rm $filename.flock") aus.
Nach Punkt 1 kannst Du noch prüfen, ob $flockcount den Wert 5000 erreicht hat. In dem Fall ist die Datei $filename.flock vermutlich durch einen Systemabbruch fehlerhaft noch existent, aber Du kannst auch auf eine Fehlerausgabe verzweigen. Vergiß nicht, vor der while-Schleife die $flockcount auf 0 zu setzen.
Wie gesagt funktioniert das ganze recht gut bei mir, und zwar bei ziemlich starken Einsatz (durchschnittlich(!) alle 30 Sekunden für die selbe Datei). Wenn Du alle Dateizugriffe mit diesem System versiehst, sollte Deine Zählerdatei also sicher sein. Zusätzlich kannst Du aber noch beispielsweise ein mal täglich ein Backup der Datei machen.
Viel Glück, und halt mich bitte über Deine Fortschritte auf dem Laufenden :-)
Cheatah