• ベストアンサー

ファイルロックの仕方

leaz024の回答

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

こちらのページも大変参考になりますよ。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#File_Lock
verine
質問者

お礼

大変遅くなりましたが、ご回答ありがとうございます。 ファイルロック、まだまだ勉強したいと思います。

関連するQ&A

  • Perlでロック不具合?

    Perlを使用して、掲示板のようなものをつくり、ずっと稼動させていましたが、 今日、データが消えてしまいました。 データのファイルサイズがゼロになっていました。 ファイルの書込み時には、flockを使用してロックをかけています。 #--ロック flock LOCK,2; #--アンロック flock LOCK,8; どのような原因が考えられますでしょうか? flockが使用できることは、別途スクリプトを作って確認済みです。 環境 SuSE linux 9 Perl v5.8.3 書込みが最大で1日に30件程度 宜しくお願いします。

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

    ファイルのロック方法を下記の様にしてロックさせていますが、同時ににアクセスが合ったときにどちらかが$add_text;を書きこまれないので順次書き込まれる様にしたいのですが、何方かご教授してもらえませんか? #!/usr/bin/perl use Fcntl ':flock'; open(ADD_DB,">>$log"); flock(ADD_DB, LOCK_EX); print ADD_DB "$add_text;\n"; flock(ADD_DB, LOCK_NB); close(ADD_DB);

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

    こんばんわ、お世話になります。 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とPHPで同一ファイルをファイルロック

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

    • ベストアンサー
    • PHP
  • ファイルロックのかけ方

    今、PerlでCGIを作っているのですが 友達にデータファイルをロックした方がいいよ。 って言われました。 その友達もロックの仕方は知らないみたいですので 何か良い方法があったら教えてください。 それと、ロックというのは 読み込むときと書き込むとき両方必要なのかも教えてください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • CSVファイルをCGIでダウンロード

    Perlを使ってCGIを書いています。 申し込みフォームを送信すると、CSVファイルに書き込むのとメールで送信するというCGIを作りました。 そこで、その作ったCSVファイルをFTPソフトを使うのではなく、ブラウザ上でCGIを使ってダウンロードしたいのですが、どうしたらよいのでしょう? 環境は OS:Linux、PerlのバージョンはPerl5です。

    • ベストアンサー
    • CGI
  • ロック??

    データファイルとかは同時書き込みされると破損するみたいですね。 それを防ぐにはとうすりゃいんだ?と思い書籍(十日でおぼえるPerl講座)をみるとFlock関数を使えばいいとありました。 しかし自分が使っているスクリプトのロック関数は MkdirとSymlinkだけです。 これはどうすればいいんでしょうか?

  • ファイルロックについて

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

    • 締切済み
    • CGI
  • file()を使う時のファイルロック

    たいていの場合は問題ないのですが、 アクセスカウンタ等の更新の激しい物の場合、 file()やfile_get_contents()でファイルを開き、 その内容を元にfopen()・flock()・fputs()等を使って書き込むと、 データが破損してしまう事があります。 これはロック中でもfile()等では開けてしまうのが原因だと思いますが、 file()等を使う際の排他処理はどのようにしたら良いのでしょうか。 ロック中は、fopen()の前で解放されるのを待つ仕様なようなので、 $fp=fopen("ロック用ファイル","r"); flock($fp,LOCK_EX); ~複数のファイルの読み書きを含めた、様々な処理~ fclose($fp); としてみたのですが、これで排他処理は完璧になるでしょうか? これまでは、 1. ロック用ファイルが存在する場合、なくなるまでsleep() 2. 空のロック用ファイルを作成 ~複数のファイルの読み書きを含めた、様々な処理~ 3. ロック用ファイルを削除 としていたのですが、これでは度々破損してしまいました。 「1」と「2」の間で、新しいプロセスが「1」に割り込んで来てしまうせいでしょうか。 そうだとすれば、fopen()とflock()の間でも 同じ事が起きてしまう気がするのですが、どうなんでしょうか。

    • 締切済み
    • PHP
  • flock関数についてですが、

    自分が探した限りでは、どの参考の本にも、あるいはperlについて論述したサイトにもこのことに関する記述がなかったので質問させていただきます。  flock関数でのファイルのロックなのですが、例えば、Aというperlで組んだcgiプログラムがファイルロックしている最中に、Bという同じディレクトリの中にある別のcgiプログラムが、同じファイルを開けようとしても、ファイルはロックされているものなのでしょうか?それとも、ロックされていない無防備な状態でいると言う事でしょうか? いろいろ調べて回りましたが、この事についての論述は見当たりませんでした。この事について知っている、あるいは解説されたサイトをご存知だという方、よろしければお知恵を貸してくださいませ。よろしくお願いします。

    • ベストアンサー
    • Perl