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:|
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|