HAllo,
um eine automatische Abarbeitung von Daten zu ermöglichen muss ich zur Steuerung einige Daten extern speichern. Dabei will ich vermeiden das mehrere Prozesse auf diese Datei zugreifen.
D.h. klassischer Filelock: eigentlich also
open (FILE, "file.ext");
flock(FILE,2);
#do your stuff
close(FILE);
Die Daten werden aber in .ini Dateien, d.h. im Windowsstyle, abgespeichert. Dazu benutze ich das Modul "Config::IniFiles". Dieses funktioniert so:
$cfg = Config::IniFiles->new( -file => "/path/configfile.ini" );
# Daten lesen und schreiben
$cfg->RewriteConfig();
Bei new() wird das komplette .ini gelesen, beim RewriteConfig() wird's komplett geschrieben. Alles dazwischen passiert im Speicher. Ein flock nach dem new() kommt also zu spät, da ein 2. Prozess dann schon die alten Daten gelesen hat.
Soweit verstanden?
Wie kann ich das umgehen/lösen?
Gibts vielleicht Alternativen zu "Config::IniFiles"? Aber alles per-hand zu manchen bin ich zu Faul :-)
Ach ja: Alles unter Windows.
By
Reinhard