Leser: 16
1 2 3 4 5 6 7 8 9 10 11 12
my $query = CGI->new(\&hook, $sessid); sub hook { $my_file="/tmp/upload/$umid" . ".meta"; open(PLOT,">$my_file") || die("This file will not open!"); flock PLOT, 2; # lock file print PLOT $bytes_read; print PLOT "/"; print PLOT $ENV{'CONTENT_LENGTH'}; flock PLOT, 8; # unlock file close(PLOT); }
1 2 3 4 5 6 7 8 9
$file = "/tmp/upload/" . $in{'session'} . ".meta"; $opened = open(DATA, "<$file") or die("can't open $file"); if($opened) { binmode DATA; $data = <DATA>; close(DATA); print $data; }
Quotebzw. wenn du die Datei immer komplett neu schreibst, könntest du alternativ erst eine temp-Datei schreiben und die dann per rename() oder File::Copy::move() an die richtige Stelle verschieben, dann sollte der Fall nicht mehr auftreten, dass das zweite Skript eine gerade im Schreiben befindliche Datei ausliest.
2009-11-23T10:13:45 pqach ja stimmt, also rename() verwenden und am besten datei ins gleiche verzeichnis, so dass die gleiche partition sichergestellt ist