2008/09/23

ファイル操作の排他制御

fopenしてfcloseするしか知らない人が多くて困ります><

某所より引用:http://www.din.or.jp/~ohzaki/perl.htm#File_Lock



ファイルを読み込み,それを加工した上で書き込む場合の安全な排他制御の手順を書いておきます.

1.ロックする
2.ファイルを読み込む
3.一時ファイルに書き込む
4.一時ファイルを元ファイルにリネームする
5.アンロックする

2 件のコメント:

Taka さんのコメント...

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/28243

こういう方法もあったり。
コツはやっぱりrenameなんでしょうね。
これでロック処理として十分なのかどうかはよくわからないですが、lock系のAPIって環境に依存しまくりだから、結構便利なノウハウだと思っております。

jihna さんのコメント...

PHPバージョン

http://programming-magic.com/?id=43

http://wawatete.ddo.jp/exec/program/php/php_filelock

他システムとファイルを連携する場合は、
ファイルの内容を書き込んでからrenameは必ずやりますね。