CSVファイルを更新するアプリケーション(1つ)、複数のプロセスからCSVがランダムに更新されているプロセスが2つあります...)同じ時間に、いくつかのデータが失われてしまったり、上書きされたりします(?)。複数のプロセス間でファイルを共有する[Perl]
これを避けるにはどうすればよいですか?自分のデータにアクセスするための
おかげで、
CSVファイルを更新するアプリケーション(1つ)、複数のプロセスからCSVがランダムに更新されているプロセスが2つあります...)同じ時間に、いくつかのデータが失われてしまったり、上書きされたりします(?)。複数のプロセス間でファイルを共有する[Perl]
これを避けるにはどうすればよいですか?自分のデータにアクセスするための
おかげで、
使用PerlのDBIDBD::CSV driverと。あなたのためにflock
の世話をします(Windows 95または古いMac OSを使用している場合を除きます)。後でRDBMSに切り替えることにすれば、十分に準備できます。
シンプルflock
@Fluffで提案されているように、もちろんうまくいくはずです。
ファイルロックを簡単かつ手動で処理したい場合は、
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)
何らかのデータベースを使用したいと思うような音がします。あなたが本当にCSVを使いたいのであれば、[flock()](http://perldoc.perl.org/functions/flock.html)の使用をお勧めしますが、できるだけプロセスを書き直す必要がありますファイルが利用可能になるのを待つ。 – Fluff
どのオペレーティングシステムですか? – dolmen
linux/ubuntu OS – snoofkin