• 締切済み

ロック機能を付け加えるには・・

CGIで掲示板を運営しているのですが、2重の書き込み・読み取りを防ぎ、データーが消去されるのを防ぐロック機能というものがあると聞きました。 この機能を追加するにはどのようなプログラミングをすればよいでしょうか? 教えてください!!

みんなの回答

  • basil
  • ベストアンサー率35% (148/420)
回答No.4

cockyさん、の書かれている内容でイケると思います。 ちょうどいい情報のサイトがあるんですね。 私にも参考になりました。 #ところで、とほほさんのサイトは現在DNSが機能していないようで、210.147.12.37で行けば見えました。

参考URL:
http://210.147.12.37/twn/wwwperl2.htm#flock
  • cocky
  • ベストアンサー率57% (232/402)
回答No.3

flockはWindows系OSだと使えない上に、Unix系OSでもOSによってはflockのロック機構にバグがあり、flockしてるのにデータが消えてしまう、ということが多々起きますので、ロック機構は二重にしておいた方が無難です。 具体的なロック方法については下記のサイトの解説が詳しいです。 (「とほほのWWW入門」は今サーバ自体にアクセスできない…)

参考URL:
http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm
  • basil
  • ベストアンサー率35% (148/420)
回答No.2

CGIで使用している言語はPerlですか? であれば「flock」のことですね。 こう言った場合「とほほ」さんのサイトはたいへん有効です。 下記アドレスを参照してください。

参考URL:
http://wakusei.cplaza.ne.jp/twn/wwwperl2.htm#flock
  • ykc
  • ベストアンサー率29% (28/95)
回答No.1

OSはなんですか? WindowsとUnixでは方法が異なります。

関連するQ&A

  • ASPでMDBファイルを更新する時のロックについて

    こんばんは ASP(VBスクリプト)で MDBファイル(アクセス2000)の データベースを 更新 又は レコード追加 をさせるときの ロックについて悩んでいます。 まず条件として このMDBファイルは 複数のユーザーが共有する物です。 (ここでは仮に A B C と3つのユーザーとします) データの新規登録の時(レコードの追加)はレコード内の項目で 絶対重複しないIDを発行して登録します。 逆に更新の時は そのIDを基に該当レコードを更新します。 また、IDはA*** B*** C*** と言うように 各ユーザーの固有ID+重複しない番号 と言う内容にしています 二重書き込み防止のために色々考えているのですが このIDを基にした方法だと 基本的にはAというユーザーが 同じIDの情報を複数のブラウザ開かない限り二重書き込みには ならないと思っています。 (変更登録などはパスワードで管理して物理的に1人(1画面)しかできないようにしています) なので物理的な2重書き込みはこれで防止できると思っているのですが 正しいでしょうか? ただ、ものすごく悩んでいるのが 1人が1つのデータベースをさわっているのなら良いのですが 複数人が同時に使っている場合、レコードが服従することはないので 2重書き込みはないとしても Aのデータを更新しているときに Bが新しく情報を追加したと言うような 事は起こるはずなので、ファイルが壊れないかと心配しています。 なので cgiで言うような書き込みロックのような事が ASPでもできるのかなと思っています。 ただ、それ以前に こういった使い方はダメでしょうか? (1つを複数人で使うこと) 良くない場合は A、B、C それぞれデータベースを作り それを結合させた方が賢明なのかなとも思っています。 ロックの方法でやるか 個々に作って結合させるか それ以外にもよい方法があるのか これで悩んでします。 また、ロックの場合 Updateではなく Recordsetオブジェクトを使って IDがあれば更新 なければ 追加 と言う方法にしようと 思っていまして その場合 OPENメソッド recordset.Open Source, ActiveConnection, CursorType, LockType, Options で、ロックタイプを3にしても これはUpdateの時だけ有効のようなので 意味がないのかなと思っています ただ MSのHPでの解説で >>レコード単位の共有的ロックを示します。Update メソッドを呼び出した場合にのみ、プロバイダは共有的ロックを使ってレコードをロックします。 と書いているのですが、そもそも >>共有的ロックを使ってレコードをロック と言う意味が分かっていません ファイルを壊さないためにも有効であるなら Updateを使う方法に変えようかとも思うのですが、どうなんでしょうか? なんか 基礎的なことが分かっていないので 分かりにくい質問になりましたが ファイルが壊れないような処理方法を作っていきたいので、ご教授のほど よろしくお願いします。

  • ユーザログイン機能のある無料の掲示板探しています

    このようなCGIを探しています。 ・フリー(無料) ・掲示板を閲覧・書き込みするための   ログイン機能がある ・あまりかわいい系はNG 会員専用の掲示板を作りたいと思っていますが、 ログイン機能付の掲示板が見つかりません。 何かいいアイディアありましたら よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 返信機能つき掲示板

    返信機能なしの掲示板をつくりました。 そこでこれに返信機能をつけたいと思い、作成しなおしてるんですが、イマイチ仕組みがわかりません。 1.最初の書き込みにID,COUNTをつける。 2.返信をかいたら、同じID,COUNTには1を足した状態で新しいデータを追加。 動作としては上記のような方法であっているのでしょうか? CD-ROMがあるのですが、それをみてしまうと自分で書いたことにならないし、解読しようにも難しくて…

  • Perlでロック不具合?

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

    • ベストアンサー
    • Perl
  • どういう時にテーブルロックを使用するのでしょうか

    PHPのサンプルにテーブルロックがあったのですが、 使いどころが分からないので、教えてください。 どういう時にテーブルロックを使用するのでしょうか。 サンプルの解説だと、 「LOCK TABLES」構文を使って会員と管理者が同時に実行する可能性がある更新と削除で テーブルをロックします、 とあるのですが、 例えば、:INSERTとかでは、テーブルをロックしなくてよいのでしょうか? これまで、気にしたことはなかったのですが、 例えば、(テーブルロックをしていない)掲示板で、たまたま同時に書き込みをしたり、しても、特に問題ないのでしょうか? どういう時に、テーブルロックをして、 どういう時にテーブルロックをしなくてよいか、分かりません。 例えば、同じ掲示板の機能を保持するサイトが複数あった場合、 テーブルロックというのは、 大体、処理別でこういう風にする、と決まっているようなものなのでしょうか? あるいは、データの持ち方によって、 それこそサイト毎に、実装(どこでロックするか等)はそれぞれ変わってくるようなものなのでしょうか?

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

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

    • ベストアンサー
    • CGI
  • ML機能付き掲示板で任意の書き込みだけをメールできるものを探しています

    メーリングリスト機能付き掲示板のうち、任意の書き込みだけをメールでながせるCGIを探しております。 通常は普通の掲示板、しかし、書き込むときにチェクマークをつけると、登録しておいたメールアドレスに一斉送信されるようなイメージです。 CGIでなくとも、フリーの掲示板またはメーリングリストのサイトでも構いません。よろしくお願いします

    • 締切済み
    • CGI
  • Power2Go ディスクコピー機能について

    CyberlinkのPower2Goディスクコピー機能ですが こちらって読み取りから書き込み終了後、読み取り元のデータは自動で削除されているのですか?

  • カウンター キリ番&IPロック

    いぜん・・2ヶ月くらい前にどこかのサイトで文章を読んでいまさらながら見つけれないので質問します。 私はPerlで行っています。 キリ番機能とロックを付けた場合、Aさんが999を取ってBさんが1000を取っておめでとうページに飛ばされて、Aさんがまた戻ってくると、2重防止でAさんも1000になり、2人も1000番が出てしまいます。この回避方法はどうすればよいにでしょうか? 誰かが保存ファイルを開いているときに誰かが来たら待つようにするロックですが、3人が重なったらなど、深くかかれていました。そして、こういう対策をしていくと、CGIが重たくなるので機能を抑えながら万全の対策はどれくらいがいいのでしょうか? お願いします。

    • ベストアンサー
    • CGI
  • 掲示板の表示件数を制御したいのですが。

    CGI初心者です。 CGIを使って掲示板を設置したのですが、掲示板の表示件数(保存件数ではありません)を少なめに設定したいのです。どのようにプログラミングしたらよいのでしょうか。 その場合、表示されない過去の書き込みも別にみられるようにするにはどうしたらよいのでしょうか。

    • 締切済み
    • CGI