Cruz: flock() Lösung

Beitrag lesen

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