タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

排他制御に関するxnightsのブックマーク (9)

  • ファイルロック - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "ファイルロック" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2020年12月) ファイルロック(英: file lock)とは、コンピュータのファイルへのアクセスを一時的に1人のユーザーや1つのプロセスに制限する機構。このロックの目的はいわゆる「仲裁更新」(interceding update) のシナリオを防ぐことである。 仲裁更新問題とは次のような例で表される。プロセスAおよびプロセスBがある顧客の口座残高を含むレコードをファイルから読み込み、各プロセスがその値を別々のメモリに保持している状況下で、次の事象が順番に発生した場合

  • flock(), fcntl() - ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

    Xhwlayとか、YakiBikiで使おうと思ってたチケットトークンの扱いで気になってたものの一つに、flockの範囲の扱いがあった。つまるところ、ファイルをどうロックしてどこでアンロックするのが良いのか?という話。 例えば、次に示すPHPコードはチケットの扱いに問題が発生する。 <?php // チケットIDを取得。ここの部分は話題の範囲外なので省略。 $tickt_id = ... ; // 現在時刻の取得 $now = time(); // チケットファイル名を返却する関数。同様に実装省略 $ticket_file = get_ticket_file($ticket_id); // チケットの最終更新時刻を取得 $mtime = filemtime($ticket_file); // (A1) if ($mtime === false) { // 存在しない場合は無効なチケットIDと

    flock(), fcntl() - ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)
  • http://testwiki.xn--xnq.jp/index.php?PHP%2F%A5%D5%A5%A1%A5%A4%A5%EB%A5%ED%A5%C3%A5%AF%2F%C0%DF%B7%D7

  • PHP/ファイルロック - TestWiki - PukiWiki Plus!

    flockはアドバイザリロック flockはプロセス間の共同掲示板のように動作します。すなわち、flockで排他ロックしても、他のプロセスがflockでロックを行わずに同じファイルにアクセスすることが出来てしまいます。 同じファイルにアクセスしうる、全てのプロセスがflockを確認して初めて、flockはロックとして機能します。 ▲ ▼ 組み込み関数でのロック ファイルポインタを使わずに、ファイル名でアクセスできる組み込み関数が多くあります。 file() file_get_content() これらの関数でアクセスする際にも、ロックを必要とすることが在るかも知れません。 この場合、flockを直接使うことは出来ませんが、flockがアドバイザリロックである性質を利用して、次のように安全なロックを実現できます。 この時、fileが新たに開くファイルポインタに対しては、flockを使わず

  • @ITのPHPの記事が突っ込みどころ満載 - 暴言満載

    サンプルで理解! フォームデータの受け渡し 1ページ目 menu.phpは、排他処理を扱ったようですが、早速ひどいです。 「一般的なオンラインシステムでは同時処理に対するデータの矛盾が発生しないよう留意する必要があります。」と書いているので、単にファイルが壊れなければいいという考えではないみたいなのに。 (1)flockするまえにデータを読むな (2)file_existsのあとでwモードでファイルを開くな (3)set_file_bufferはOSのバッファリングは関係ない (4)fcloseの前にflock解除するな (1)について。ファイルにはあらかじめ 1000000004 と書いてあるとします。 ユーザー1が4行目でファイルを開く ↓ ユーザー1が5行目で $order_no に 1000000005 を代入 ↓ ユーザー2が4行目でファイルを開く ↓

  • Perl講座: ファイル入出力

    ファイルオープンとクローズ- open, close - print, printfでの出力 ファイルテスト演算子 ファイルロック - flock - ファイルオープンとクローズ- open, close - Perlに限らず、一般的にプログラムではファイルからデータを読み込み、 処理をした結果をファイルに出力します。 「繰り返し - while、for -」の ページでも簡単に紹介しましたが、ここではファイルからデータを 読み込むために必要なファイルオープンと、 ファイルをオープンし処理が終了した後に行う ファイルクローズについて説明します。 ファイルからデータを読み込むためには、まずファイルを開かなければいけません。そのためには、openという関数を使います。

  • 排他処理に stream_set_write_buffer は不要じゃね? - 暴言満載

    PHPの話。 「set_file_buffer (stream_set_write_buffer) でバッファを0にしないと排他処理が正常に行われない」なんて感じの記述がgoogleで見つかったり、PHPのユーザーの間で常識のように語られたりするんですが、なんなんでしょうかこれ。 stack*の連載PHP set_file_buffer という関数では、書き込みバッファを 0 にするという操作をしています。なぜこんなことをするかというと、通常、あるファイルに書き込みをする際には、「バッファ」...

  • http://www.res-system.com/weblog/item/359

  • 関数とファイルロック 【PHP講座】

    print test($a,"D");では、関数test()を実行しその結果が出力されます。returnが返される結果です。 test内の$bは中身が宣言されていないので空になります。 test内の$cはグローバル宣言されているので、元の$cの中身が格納されています。 test内の$dは引数として渡された$aの中身が格納されています。 test内の$eは引数として渡された"D"が格納されています。 インターネットでは、同じCGIが同時に実行されることがあります。この時、同時にファイルに書き込もうとしたときにファイルが壊れたり、内容がおかしくなることがあります。それを防ぐためにファイル処理は同時に行わせずに、順番に処理を行うようにする必要があります。 ロック処理の流れとしては、 1.ファイル処理が実行されていないか確認する 2.実行されていれば、それが終わるのを待つ。 3.実

  • 1