Hi Cruz!
Ich habe mal vor langer Zeit (naja, relativ) folgenden Code verwendet:
$cFLOCK_SHARED = 1;
$cFLOCK_EXCLUSIVE = 2;
$cFLOCK_NOBLOCK = 4;
$cFLOCK_UNLOCK = 8;
$cTIMEOUT = 10;
$cCOUNTERBASE = "local_counter.dat";
if (! -e $cCOUNTERBASE) {
open(CBASE, ">$cCOUNTERBASE");
close(CBASE);
}
for ($i=0; (!open(CBASE, "+<$cCOUNTERBASE") && ($i < $cTIMEOUT)); $i++) { sleep(1) }
abort() unless ($i < $cTIMEOUT);
for ($i=0; (!flock(CBASE, $cFLOCK_EXCLUSIVE$cFLOCK_NOBLOCK) && ($i < $cTIMEOUT)); $i++) { sleep(1) }
abort() unless ($i < $cTIMEOUT);
do your stuff
flock(CBASE, $cFLOCK_UNLOCK);
close(CBASE);
abort() ist eine eigene Funktion, die letztlich nur ein exit() oder die() macht. Hat bisher eigentlich noch nie Probleme gemacht, war aber auch noch nicht so sehr stark frequentiert, der Server auf dem das laeuft. Comments sind natuerlich erwuenscht.
Calocybe