- 締切済み
排他処理
こんにちは。 定期的にperlスクリプトを動かしてファイルを作成し、http(Apache)でそのファイルを参照するシステムを作成中です。 このとき、作成中の中途半端なファイルを読まないようにしたいのですが、 どのようにするのがよいでしょうか? CGIスクリプトで掲示板等のファイルにアクセスする際の排他制御についてなら、いろいろと情報もあるのですが、今回のようなケースについてはどうも情報が見つかりませんでした。 単純にテンポラリファイルを作って最後にrenameするだけでもよさそうなのですが、どの程度確実なものでしょうか。 あるいはapacheの設定でなにかうまい方法があるのでしょうか? どなたかご存知でしたら、ご教示願います。 OSはSolarisです。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
回答No.3
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
回答No.2
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
回答No.1
補足
お返事ありがとうございます。 >ファイルロックが無理なら、 そのファイルロックなのですが、いろいろと検索してみると、 ・協調ロック ・強制ロック とがあって、unixで一般的なのは協調ロックであるとの記述が多いのです。 協調ロックの場合、そのファイルをオープンするすべてのプロセスがロックのためのコードを書かねばならないらしく、そうすると、apache側でロックに対応していない場合、ロックしても無意味なのかなと思われるのです。 この点、実際のところはどうなのでしょうか? >それでは、あらかじめランダムなファイル名でテンポラリファイルとして作成しておいて、ファイルが完成したらrenameで公開ディレクトリに移動するとか、 >他の方法は採れないのでしょうか? renameなのですが、apache側でファイルを読み込んでいる最中にrenameされた場合にはどうなるのでしょう? ファイルの途中から新しい内容を読み込んでしまったりはしないのでしょうか? 細かい話で申し訳ありませんが、よろしくお願いします。