fopen(FILE)
$data = fread()
fputs($data++)
fclose()etwas vereinfacht.
Das habe ich probiert mit einem flock sicher zumachen:
fopen(FILE)
flock(LOCK_EX)
$data = fread()
fputs($data++)
fclose()Nur wenn jetzt 2 User (fast) gleichzeitig drauf zugreifen, könnte es doch passieren dass der erste User die Datei öffnet, und bevor er die Datei sperrt liest der 2. User die Datei ein, oder? Oder kann sowas definitiv nicht passieren?
Genau das wird irgendwann passieren.
Wenn du in EINEM Skript eine Datei änderst und du wünscht nicht, das ein anderer Prozess die Datei in der Zwischenzeit verändert, musst du den flock während des ganzen Prozesses aufrecht erhalten.
In deinem obigen Beispiel einfach, in dem du die Datei zum lesen und schreiben öffnest.
my $file = "datei.txt";
open F, "+<$file" || die "Kann $file nicht öffnen weil: $!";
flock FILE, LOCK_EX;
my $data = <FILE>;
truncate FILE,0;
seek FILE, 0, SEEK_SET;
$data++;
print FILE $data;
close FILE;
Nur so bist du auf der sicheren Seite.
Struppi.