• ベストアンサー

ファイルロックのかけ方

noname#25358の回答

noname#25358
noname#25358
回答No.2

 flockの解説は下記のHPにも載っています。

参考URL:
http://wakusei.cplaza.ne.jp/twn/

関連するQ&A

  • ファイルロックの仕方

    Perl5を使ってCGIを作っています。 環境としては、OSはLinuxです。 ファイルロックなんですが、flockを使うということはわかっているのですが、ファイルが壊れ難いファイルロックの書き方というのがあるのなら教えて欲しいと思って質問しました。 初心者なので、出来れば書き方・使い方を詳しく教えて頂けたらと思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • PerlとPHPで同一ファイルをファイルロック

    PerlとPHPで同一のファイルを読み書きする必要があるのですが、ファイルロックする機構を作るには互いの言語でmkdirで対応したほうがよいのでしょうか? flock関数がPerlにもPHPにもありますが、これは、PHPのプロセスで実行したロックの状態をPerlで検知したり、または逆のことはできないのでしょうか? もしできないとするとmkdirで同一の機構を作ったほうが良い気もしますが、何か問題などは起きないでしょうか。

    • ベストアンサー
    • PHP
  • ファイルロックについて

    こんばんわ、お世話になります。 Perlのファイルロックについて教えて下さい。 色々書き方があるようなのですが、私は下記のように 単純に書いています。 #// ファイルロック開始 flock(LOCK, 2); #// ファイルオープン open(LOG, ">>$data") or exit; #// ファイルへ書き出し print LOG "$now,$ip,$ls\n"; #// ファイルクローズ close(LOG); #// ファイルロック解除 flock(LOCK, 8); 原因かわからないのですが、アクセスが多数同時にあると 10分くらいレスが返ってこなくなったりすることがあるようです。 ファイルロックに精度とかあったりすのでしょうか? 単純に、コードが1500行くらい書いているので、やっている処理自体 重いのかもしれませんが、1アクセスの場合は問題なく返ってくるので どうなのかな…と思い、投稿しました。 論理ファイル(CSV)を呼んで、中のデータを絞り込んでいき その結果をPOSTするいったこと(100ファイル分くらい)をやって います。 ファイルロックによって、パフォーマンスが悪くなったりするのか、 どなたかご教授ください。お願いします。

    • ベストアンサー
    • Perl
  • ファイルロックのおすすめプログラムはありますか?

    こんにちは! 表題通りperl製CGIのファイルロックについてなのですが。 現在こちら(http://www1.plala.or.jp/bagi/labo/lock.html) のファイルロックを使用させて頂いているのですが、数ヶ月に1度くらいの頻度でログが飛んでしまいます。 同時アクセスによって飛ぶ、というのは理解できるのですが、それにしては少し多いんじゃないかな?と思い質問させていただきました。 このプログラムに問題があるのか、それともやはり同時アクセスのせいなのでしょうか。 合わせて、もしオススメのファイルロックのプログラムがあれば、参考に紹介していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイルのアップロード Perl5.8

    ファイルのアップロードでCGI::Liteを使っています。 PerlはActivePerlのバージョン5.8ですが アップロード先のデータの中身が変わってしまい、 画像データなのに別のファイルになって表示されなくなりました。 これはファイル自体の文字コード変換が絡んでいるということですか? また、CGIとCGI::Liteの違いですが、両方使ってもよいのでしょうか?

    • ベストアンサー
    • Perl
  • ロックファイルが消える

    ファイルロックにflockを使っているのですが、複数のファイルを扱うので、データファイルにロックをかけるのではなく別途「ロックファイル」に対してロックをかけています。 データファイルであれば読み書きモードで開く必要がありますが、ロックファイルは中身はどうでも良いので、 open(LOCK,"> $lockfile") or die ~ というように上書きモードで開いて良いとする解説を読んだので、そのようにしています。 しかし、ごくたまにロックファイルが消えてしまう現象が発生します(なかなか再現できずに条件など特定できず)。 あくまでもファイルの中身が壊れるとかいうことではなくて、ファイルそのものが消えます。 そこでお聞きしたいのですが、 1. ロックをかけたファイルが何らかの原因で消えた場合、ロック状態も消失してしまう(他プロセスがロックできてしまう)のでしょうか? 試してみたのですが、  まずプロセスAがロックをかけて  プロセスBが同ファイルにロックをかけようとすると、失敗する  プロセスAがロック解除せずにファイルを削除する  それでもプロセスBはロックに失敗する  プロセスAが(もう存在しないファイルの)ロックを解除(close)する  するとプロセスBはロックに成功する ということは分かったのですが、上記を、プロセスAがファイルを削除した後にプロセスBを動かすと、どういうわけかロックに成功してしまいます。 2. 複数プロセスが同時に上書きモードでopenしようとするのが消える原因なら、ロックファイルであってもやはり読み書きモードで開くべきなのでしょうか。そしてそれなら消えることは無いのでしょうか。 (読み込みモードではロックできないという解説もありました。) 御教授のほどよろしくお願いいたします。

  • ロックファイルの確実性について

    たとえばカウンタなどを作ろうと思ったとき、データを保存する ファイルを2重にアクセスできないようにするために、ロックファ イルを用意するのが一般的だと思います。 しかし、単にロックファイルを作って、それを if (-e $lockfile) {~~} などとやっても、けっこう頻繁に2重アクセスされてしまいます。 実際、以前、1000アクセス/日あるページを運営していたとき、上の 方法では3日に1回は壊れました。 上の方法は、理論上はありえないはずなのに、なぜおこるのでしょうか? また、ロックファイルではなくロックディレクトリを作って、 unless (mkdir ("./lock", 0777)) {~~} と行うことによっても、同様の判定が可能かと思いますが、 こちらの方法でもやはり2重アクセスが発生してしまうことが あるのでしょうか? その確立は、ロックファイルと同一レベル でしょうか? また、発生するならば、ディレクトリシステム上に 同じ名前のディレクトリが2つ存在することになるのでしょうか? もしわかる方がいらっしゃいましたら、ぜひ教えてください。

    • ベストアンサー
    • CGI
  • ファイルロックについて

    現在商品管理システムを自作してみようと頑張ってるところなのですが、ファイルロックで躓いてしまいました。flock()を使ってみたのですが同時に複数の処理(データの更新と書き込みを同時に行った場合等)が行われるとデータが消えてしまったりします。 皆様はどういった形でファイルロックをしてますか? これは安全だ! というようなロックってのはあるんでしょうか?

    • 締切済み
    • CGI
  • ファイルロックの質問

    プロバイダ:VC-NET スクリプト:Perl 在庫管理などで、在庫を変更中に変更前の値を第三者が閲覧してしまうと矛盾がおきますよね?そこで質問なのですがこの様な場合みなさんどうされてるのですか? 私は、書き換えるファイルを file → file986172208 アクセスした時間(Perlのtime)を付加してファイルロックをして、 書き込みを終えれば file986172208 → file また元に戻す。 イントラネット上では期待した結果が得られたのですが、いざアップしたら ”サーバー側のエラーですよ”と表示されました。 ですがTELNETから動作させるとうまく動作しました。 ファイルのパーミションは スクリプトファイル:755 データファイル:666 です。 みなさんからのご意見お待ちしています。

    • ベストアンサー
    • CGI
  • ファイルにロックする方法

    誰か、ファイルのロックの仕方を知りませんか? ついでにロックの解除の仕方も教えてください。