2011-12-17 14 views
4

CSVファイルを更新するアプリケーション(1つ)、複数のプロセスからCSVがランダムに更新されているプロセスが2つあります...)同じ時間に、いくつかのデータが失われてしまったり、上書きされたりします(?)。複数のプロセス間でファイルを共有する[Perl]

これを避けるにはどうすればよいですか?自分のデータにアクセスするための

おかげで、

+6

何らかのデータベースを使用したいと思うような音がします。あなたが本当にCSVを使いたいのであれば、[flock()](http://perldoc.perl.org/functions/flock.html)の使用をお勧めしますが、できるだけプロセスを書き直す必要がありますファイルが利用可能になるのを待つ。 – Fluff

+0

どのオペレーティングシステムですか? – dolmen

+0

linux/ubuntu OS – snoofkin

答えて

6

使用PerlのDBIDBD::CSV driverと。あなたのためにflockの世話をします(Windows 95または古いMac OSを使用している場合を除きます)。後でRDBMSに切り替えることにすれば、十分に準備できます。

シンプルflock @Fluffで提案されているように、もちろんうまくいくはずです。

0

ファイルロックを簡単かつ手動で処理したい場合は、

1) As soon as a process opens the csv, it creates a lock. 
    (Lock can be in the form of creating a dummy file. The process has to delete 
    the file(lock) as soon as it is done reading/updating the csv) 
2) Have each process check for file lock before trying to update the csv. 
(If dummy file is present, some process is accessing the csv, 
    else it can update the csv) 
関連する問題