Thread Multi-Threading-Problem bei Dateizugriff
(7 answers)
Opened by slyfox1972 at 2009-11-23 09:18
Hallo!
Ich entwickle gerade selber eine Upload-Progress-Bar... Das Prinzip ist einfach: das CGI-Script, das die Dateien empfängt, schreibt die Zahl der empfangenen Bytes in eine Datei, per Javascript wird laufend ein anderes CGI-Script aufgerufen, das die Bytes ausliest. Hier werden die Bytes geschrieben: Code (perl): (dl
)
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); } Hier werden sie ausgelesen: Code (perl): (dl
)
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; } Das Problem bei der Sache: Manchmal greifen beide Scripte gleichzeitig auf die Datei zu, und $data bekommt einen leeren String. Wie kann ich beide Scripte synchronisieren, so dass eine keine Konflikte gibt? viele Grüße Egon Schmid |