emmi: flock ohne flock()

Beitrag lesen

Hi,

mein webserver unterstützt leider kein flock (oder eben der provider).
Wie kann ich aber trotzdem die entsprechenden dateien schützen? Vielen Dank für eure Antworten.

Eine Möglichkeit:

$data_dir = $ENV{"DOCUMENT_ROOT"}."....";
$lockdir = "$data_dir/filelock";

&FileLock("$lockdir");
open(...);
....
close(...);
&FileUnlock("$lockdir");

File Locking:

###############################################################

Usage    : &FileLock("$lockdir");

#    : &FileUnlock("$lockdir");                         #
#                                                             #
###############################################################

sub FileLock   {
  my($i);     # sleep counter
  while (!mkdir($_[0],0777)) {   # if there already is a lock
    sleep 1;     # sleep for 1 sec and try again
    if (++$i>60) { die("File_Lock : Can't create filelock : $!\n"); }
    }
  }

sub FileUnlock {
  rmdir($_[0]);     # remove file lock dir
  }

####################################################################