opi: Counter mit Macken

Beitrag lesen

Hallo,

mit mod_perl oder auch FASTCGI wäre nur das Schreiben notwendig ohne
seek und ohne truncate :-)

Wie kommst du darauf? mod_perl bzw. FastCGI entbinden dich nicht der
Serialisierung…

  
#!/usr/bin/perl  
  
use strict;  
use CGI;  
use FCGI;  
  
my $req = FCGI::Request();  
  
# zunaechst wird der aktuelle Stand des Counters ausgelesen.  
  
open FILE, "+<counter.txt" or die "Kann counter.txt nicht oeffnen: $!\n";  
flock FILE, 2;  
my $zahl = <FILE>;  
close FILE;  
  
while ($req->Accept >= 0) {  
  
   # hier wird fuer jeden Seitenzugriff der Counter +1 gezaehlt und  
   # weggeschrieben. da die Startposition des Pointers beim Oeffnen  
   # der Datei schon an Position 0,0 ist und die naechst hoehere Zahl  
   # nicht kleiner sein wird, kann sofort in die Datei geschrieben  
   # werden, ohne das seek oder truncate benutzt wird.  
  
   $zahl++;  
   open FILE, "+<counter.txt" or die "Kann counter.txt nicht ffnen: $!\n";  
   flock FILE, 2;  
   print FILE $zahl;  
   close FILE;  
  
   # dynamische HTML-Ausgabe ...  
}  

Das klappt natürlich nur, wenn nur ein FCGI-Prozess gestartet wird
und bei hoher Auslastung der Webserver nicht auf die kommt, noch mehr
Prozesse zu starten.

Ist der Denkansatz falsch?

Greez,
opi

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|