カレッヂ |
質問者 vagabond
投稿日 10/3(水) 02:32:54
データベースとかでない普通のファイルをlockするとき、process IDとかを使った 一時ファイルを作ってやるのと、flockを使う場合のどちらが安全なんでしょうか。 |
回答者 呑兵衛
[削除]
投稿日 10/4(木) 22:59:31
呑兵衛@大阪です。 データのことなら、どちらも消失率は同じ、でしょうね。 symlink でも消えます。 rename でもダメな時があります。 共有サーバーには、他のユーザーの実行環境でメモリオーバーが起こったとき 対処のしようがありませんでしょう。 とりあえず、書きこむ直前にダミーのファイルを書きこみ、 ファイルに書きこんだバイト数が存在すれば、ユーザからの書き込みを許し、 symlink なり flockなりを施し、$$.tmp でファイルを作り、 ファイルが存在し、かつそれなりのバイト長があれば、旧ファイルをunlink、 $$.tmp を rename、ロックを解除。 ここまでやっても消えるときは消えますね。 なので、バックアップファイルも同時に作っておく。 独立したデータでなければ、追加書きこみ >> にて対処。 くらいですかね。 |
質問者 vagabond
[削除]
投稿日 10/7(日) 02:54:41
大変丁寧にlockの仕方を解説していただいてありがとうございます。 うーん、消えちゃう時は消えちゃうって、デッドロックとかでデータの消失がありえる ってことですね。そうすると、デッドロックにも対応した非常に安定したlockモジュール とかあると便利ですね。CPANで探してみます。 |
返信(回答)する
Web裏技 |