Hi!
Tut mir Leid, daß ich schon wieder mit diesem Thema anfange, aber im Archiv stehen nur jede Menge Diskussionen und keine richtige Lösung. Darum Poste ich hier mal eine erste Version für eine flock Lösung und ich hoffe, daß am Ende dieses Threads eine Lösung im Quellcodeformat steht, die noch unsere Enkel aus dem Archiv suchen werden.
Also hier we go:
----------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/perl
$timeout=10000; #how long the script waits between attempts to get a lock
$exit=100; #how many attempts to get a lock before exiting the script
if file is locked keep trying until $exit
if (!flock(FILE,2))
{
until ($released eq TRUE or $x>$exit) {
# little timeout
$i=0;
for ($i=0;$i<$timeout;$i++) {}
#count attempts
$x++;
if (flock(FILE,2)) {$released=TRUE;}
} # end until
} # end if
if too many attempts
if ($exit>100) {
print "Server too busy, please try again.";
die;
}
else {
lock file
flock(FILE,2); # (I don't know if file still needs to be locked after "if (flock(FILE,2))")
do your sutff { }
release file
flock(FILE,8);
} # end else
---------------------------------------------------------------------------------------------------------------------------------
Ich weiß z.B. schon mal nicht genau, ob der flock noch gesetzt werden muss, nachdem man in einer if clause schon versucht hat den lock zu kriegen.
Gruß
Cruz