flock
Pitt
- cgi
0 Stefan Bach
hi,
kann mir einer erklären warum manche scripte, in denen die dateien mit flock für einen anderen zugriff zur gleichen zeit abgesichert sind, warum diese datein dann auch wieder entsperrt werden.
in manchen scripten ist die ensperrung dirn und in anderen script wieder nicht. macht das ein unterschied, ob man nur den flock-LOCK_EX-befehl eingibt, oder sollte man den schutz auch wieder mit LOCK_UN ensperren.
kann es sein das wenn man den LOCK_UN, also die entsperrung, nicht eingibt, dass die datei erst nach vollständigem ablauf des progarmmes wieder beschrieben werden darf? und wenn man den schutz aufhebt, dass ein anderer user gleich nach der aufhebung der sperre in die datei schreiben darf, ohne das das prog ganz abgelaufen ist?
danke im voraus
Hallo,
in manchen scripten ist die ensperrung dirn und in anderen script wieder nicht. macht das ein unterschied, ob man nur den flock-LOCK_EX-befehl eingibt, oder sollte man den schutz auch wieder mit LOCK_UN ensperren.
Wenn du einen Lock erhalten hast, dann bleibt dieser solange bestehen, bis
a) du ihn über LOCK_UN wieder aufhebst
b) die geöffnete Datei in deinem Programm geschlossen wird
c) dein Programm beendet wurde
Du kannst den Schutz in deinem Programm also selbst wieder über a) oder b) aufheben, aber spätestens bei c) ist die Datei wieder freigegeben.
Viele Grüße,
Stefan
vielen dank
Moin.
a) du ihn über LOCK_UN wieder aufhebst
Aber bedenke, daß diese Version das Risiko eines Datenverlustes in sich birgt: Zwischen unlock und close könnte ein anderer Prozess auf die Datei zugreifen, z.B. schreiben. Wenn dann "Dein" close kommt, werden die Daten des anderen Prozesses überschrieben. Also Vorsicht damit!
Gruß Frank
Hallo,
a) du ihn über LOCK_UN wieder aufhebst
Aber bedenke, daß diese Version das Risiko eines Datenverlustes in sich birgt: Zwischen unlock und close könnte ein anderer Prozess auf die Datei zugreifen, z.B. schreiben. Wenn dann "Dein" close kommt, werden die Daten des anderen Prozesses überschrieben.
Wenn man $io->flush aus IO::Handle ausführt, bevor man den Schutz über LOCK_UN wieder aufhebt sollte das helfen.
Aber mir fällt gerade keine Situation ein, in der es Sinn voll wäre die nicht gelockte Datei weiter geöffnet zu halten.
Viele Grüße,
Stefan