[書き込みの一括表示][Orchard Slope][教えてBBS ∀2]
DC接続サービス6月10日に終了か?

  DC接続サービス6月10日に終了か? マリエンバート 2009/05/23 20:46:06 
  御無沙汰です。 タク 2009/05/23 22:07:44 
   └予備機で情報復旧してみました。 瓦部 2009/05/24 14:31:27 
    └接続情報設定できました! タク 2009/05/25 10:50:53 
     └接続情報って、自前でキープ出来ないんでつ... マリエンバート 2009/06/02 02:41:57  (修正1回)
      ├充電について...(質問) ビタミン 2009/06/02 19:35:45 
      │├...6月15日が正解でした。m(>_<;)m マリエンバート 2009/06/03 01:27:24 
      │└別に充電の必要は、ありません くろくま 2009/06/04 05:34:43 
      │ └おぉ!くろくまさんだー!ヽ(^^) ビタミン 2009/06/04 20:56:37 
      └第三者による情報復旧は無理です くろくま 2009/06/04 05:54:57 
       └サービス終了まであと5日!... マリエンバート 2009/06/10 01:48:04 
        └6月15日過ぎちまったわ/(-.-;)....... マリエンバート 2009/06/16 23:11:52 
         ├7月4日再追加。 如月 弥生 2009/06/24 00:55:41  (修正2回)
         ├DC本体には、少なくとも2つのバージョンが くろくま 2009/06/24 06:23:10 
         └TEST板が書き込み不能 くろくま 2009/06/24 06:28:41  (修正2回)
くろくま <pvovkmwnmf> 2009/06/24 06:28:41
| ノートメニュー
Re: 6月15日過ぎちまったわ/(-.-;).......
> TEST板が書き込み不能

管理者に連絡を取るべきじゃないでしょうか。

私自身は、掲示板スクリプトとか、
Webサーバについての知識がある訳では無いのですが、
一般論とか、ちょっと小耳に挟んだ程度の知識で答えるのなら、
次のような事ではないかと思います。


一般にWebページという奴は、よくご存知のように、
読み込みを要求してから、読み込みが始まって、
それが完了するまで、数秒とか、数十秒の時間が掛かります。

つまり、Webサーバーは、
ブラウザを使っている1人の要求に対処し、それが完了してから
次の人の要求を受け付ける……という方式では、
上手くいきません。

もし、そうなっていれば、読み込みを要求してから、
それが始まるまでに、数分とか、数十分待たされるという事も、
状況によっては、あり得る事になってしまいます。

そこで実際には、複数の人の要求を、
(ハードウェアやソフトウェアの能力が許す限り)
同時に処理する事になります。

掲示板の場合、
読み込みだけなら、同時処理で、問題は無いのですが、
書き込みの場合は、単純に同時処理する訳にはいきません。

掲示板に限らず、こういったデータベースの書き込みというのは、
「元になるデータを読み込んで」、
「それに修正を加え」
「結果を書き戻す」事になるのですが、
これを複数の人が(ほぼ)同時に行うと、
「それぞれの人からは、上手く書き込めたように見えても、
 後で確認してみると、
 最後に書き込んだ人の書き込みだけが、反映されている」
という矛盾が起こったりします。

そこで、
「データに修正を加えるときには、その修正を書き戻すまで、
 他の人のアクセスを許さない」
事が必要になります。

いわゆる「排他制御」って奴です。
 Category:排他制御 - Wikipedia
http://ja.wikipedia.org/wiki/Category:%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1
http://www.google.com/gwt/n?hl=ja&lr=lang_ja&oe=Shift_JIS&u=http%3A//ja.wikipedia.org/wiki/Category%3A%u6392%u4ED6%u5236%u5FA1

いやぁ、ここ↑に書かれている事って、どれも難しくて、
私には理解しにくい/理解できない項目ばかりです。


たぶん、今回の話題に関連するのは、
この辺り↓の項目じゃないかという気がするんですけど…。

 ロック (情報工学) - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%83%E3%82%AF_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)
http://www.google.com/gwt/n?hl=ja&lr=lang_ja&oe=Shift_JIS&u=http%3A//ja.wikipedia.org/wiki/%u30ED%u30C3%u30AF_%28%u60C5%u5831%u5DE5%u5B66%29

> ロックは一般に効率的な実装をするには
> ハードウェアによるサポートを必要とする。

> ロックは故障や障害に無防備である。
> あるスレッドがロックを獲得したまま終了すると、
> 他のスレッドはそのロックを獲得しようとして
> 永遠に待ち続けるかもしれない。

 ファイルロック - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF
http://www.google.com/gwt/n?hl=ja&lr=lang_ja&oe=Shift_JIS&u=http%3A//ja.wikipedia.org/wiki/%u30D5%u30A1%u30A4%u30EB%u30ED%u30C3%u30AF

> ファイルロックとは、
> コンピュータのファイルへのアクセスを
> 一時的に1人のユーザーや1つのプロセスに制限する機構。
> このロックの目的はいわゆる
> 「仲裁更新 interceding update」のシナリオを防ぐことである。

> ロックファイル
> ロックファイルはシェルスクリプトなどのプログラムで
> ファイルロックの代替として使われる手法である。
> ロックファイルは内容は無関係で
> 存在することで他者に対して
> 何らかの資源がロックされていることを知らせるのに使われる。
> ロックファイルを使う場合、
> その操作がアトミックであることを保証するよう
> 注意しなければならない。ロックを作成するとき、
> ロックファイルが存在しないことを確認してから作成するが、
> その途中で他のプロセスがロックファイルを
> 先に作成してしまうかもしれない。


ところで、今回の件に関係があるか、どうか、
私には判らないのですが、
個人が使っている掲示板スクリプトでは、
きちんとロックされていない事が多いらしいんですよね。

それは、歴史的な理由によるものなのか、環境が理由なのか、
それとも、互換性の理由からなのか、判りませんが…。

ロックするために
ロックファイルというのを使ったりするのですが、
このロックファイルに対する操作が
アトミックではない事が多いらしいので、
ある程度の確率で、おかしくなったりするみたいです。

私には、現時点での内容の妥当性が判断できないのですが、
適当に検索すると、古いページですが、
こんなページ↓が見つかったりします。
http://www.srs.ne.jp/~north/text/misc/e37.html


Wikipediaには、ハードウェアのサポート無しに
排他制御を行うアルゴリズム↓も掲載されていますが、
 デッカーのアルゴリズム - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%83%E3%82%AB%E3%83%BC%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
http://www.google.com/gwt/n?hl=ja&lr=lang_ja&oe=Shift_JIS&u=http%3A//ja.wikipedia.org/wiki/%u30C7%u30C3%u30AB%u30FC%u306E%u30A2%u30EB%u30B4%u30EA%u30BA%u30E0

これも、ハードウェアに近いレベルでのプログラミングが
必要みたいで、掲示板スクリプトで使えるようなものでは
無いようですね。



(追加)
リンクに失敗したので修正。
うーん、どこかで、やり方が間違っていたみたいです。


(追加2)
実際に試してみると、書き込み時ではなくて、
書き込み用のフォームを呼び出すときに
エラーが出ているみたいですね。

うーん、だとすると、全然違う原因なんでしょうか…。

まぁ、いずれにしても、知ったかぶりで書いているだけなので、
あまり信用しないでください。

このノートはこれ以上発言できません。
新しくノートを作成 して、続きを書いてください。

[教えてBBS ∀2][Orchard Slope]
新規発言を反映させるにはブラウザの更新ボタンを押してください。