X



トップページ運用情報
498コメント239KB
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
■ このスレッドは過去ログ倉庫に格納されています
0001root▲ ★
垢版 |
NGNG
雪だるま作戦において開発をすすめているbbsdでは、

                   +- [ フロントエンドサーバlive22x1 ] -- ユーザは
[ バックエンドサーバlive22 ] -+- [ フロントエンドサーバlive22x2 ] -- live22xという代表名で
 制御プログラムbbsd      +- [ フロントエンドサーバlive22x3 ] -- これらにアクセス
  |     |     |        dat直読みや、
dat subject.txt subback.html   bbs.cgiやread.cgiやofflaw.cgi、
書きこみログ(芋掘り)ファイルなど  (こちらは基本的に書き込み操作なし)
(書き込み操作はこちらで)

# 復帰/削除cgiなどについては、さてどっちかな => 今後の課題

という形で「ユーザの相手」と「各種ファイル処理」を複数のサーバに分業することにより、
さらなるパフォーマンスの向上を目論んでいます。

つまりこの場合、dat/subject.txt/subback.htmlは
バックエンドサーバで動作するbbsdというプログラムがリクエストに応じて生成し、
更新や場合によっては削除する形となります。

ということで、bbs.cgiをはじめとする従来2ちゃんねるで動いているcgiでは、
これらが同じサーバにあるつもりでファイル操作をしていましたが、
上記に示すように、少なくとも元本は同じサーバにはなくなるため、
何らかの形で対策を考慮する必要があります。

また現在、ID生成の種やSamba24や
timcount/timeclose等の規制関係で使用している一時ファイル等、
複数のフロントエンドサーバが同じ情報を、
何らかの形で共有する必要があるものもあります。

このスレッドではこれらの処理方法や実装方法について考えながら、
bbsdに持たせたい・持つべきな機能をあぶり出し、実装仕様を詰めていくことを目標にしています。
0135root▲ ★
垢版 |
2005/11/20(日) 21:10:44ID:???0
>>133
どもです。

> 問題は設定値(規定秒数・注意回数・規制回数)の扱いというところですか.

そういうことですね。
なんか「ステートレス」「ステートフル」っていう話か。

> 「a) Samba24用DB初期化用API」と「b) Samba24用DB登録&チェック用API」
> を別々にした場合,>>126 でも言及されているように a) より b) が
> 先に来るという可能性もあるのですが,それなら両者を統合して
> 「b) Samba24用DB登録&チェック用API」の引数でそれらの設定値も
> 一緒に渡すというのも一案かも知れませんね.いずれにせよ
> 秒数や回数の判定は登録&チェックの段階で行うことになりますし.

これ、いいかもですね。
毎回bbsdに引数を全部渡せばいいのか。

>>134
そですね。DBのレコード毎にexpireできる仕組みを実装していただけると、
いいようなかんじで。

ちょっと、これらの路線で改めて仕様考えてみるです。
0136root▲ ★
垢版 |
2005/11/20(日) 22:11:01ID:???0
a+b) Samba24用汎用API、●でスレッド立て過ぎにも使用

書き込みリクエストがあると呼ばれる。
引数: bname, ID, s, w, k

bname: 板名
ID: IPアドレスまたは携帯固有番号またはp2の番号または●セッションID
(任意の文字列として取り扱えればOK)
s: 秒数 (s > 0)
w: 注意回数 (w >= 0)
k: 規制回数 (k >= w >= 0)

処理内容:

今まで1回もそのIDで問い合わせを受けたことがなければ、
DBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す。

そのIDで問い合わせを受けたことがある場合は、

もし、前に問い合わせを受けてからs秒以上経過していた場合には、
DBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする。

(続く)
0137root▲ ★
垢版 |
2005/11/20(日) 22:13:42ID:???0
(続き)

もし、前に問い合わせを受けてからs秒未満だった場合には、
DB側のそのIDのエントリの回数により、下記のように動作が分かれる。

1) もし、そのIDでの通産問い合わせ回数が注意回数w以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス1」を呼び出し元に返す。

2) もし、そのIDでの通産問い合わせ回数が注意回数wを超えているが、 規制回数k以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス2」を呼び出し元に返す。

3) もし、そのIDでの通産問い合わせ回数が規制回数kを超えたら、
DBを「ID、規制発動」にし、
「異常ステータス3」を呼び出し元に返す。

4) 「ID、永久」の状態になった以降は、s秒以上の時間を空けた問い合わせで
あったとしても、すべて「異常ステータス3」を呼び出し元に返す。
0138root▲ ★
垢版 |
2005/11/20(日) 22:16:23ID:???0
(続き)
あ、「ID、規制発動」になおしてください。< 4)

「ID、規制発動」の状態になってから3600秒(1時間)経過したら、
あるいは最後の問い合わせから3600秒経過したら、
そのIDのエントリをDBからexpireする。
0139root▲ ★
垢版 |
2005/11/20(日) 22:22:20ID:???0
これで、bbs.cgi側から普段使うAPIはひとつにできそうです。

で、●でスレッド立てすぎです、にも、応用できるですね。

bname: 板名
ID: ●のID
s: 3600
w: 6
k: 6

とかやれば、1時間で6つまでしか同じ●でスレッド、立てられないはず。

<チラシの裏>
うまくやれば、●を使ったスレつぶしにも対応できそうな気がしますが、
それは同じIDでDBを複数持たせる必要があるのかな。

あと、このI/Fを利用して、他サーバのbbs.cgiからex14のbbsdに通信して、
news4vipに関するデータを参照するとか(以下略。
</チラシの裏>

で、これをすればF22での定期クリアは必要なさそうな気もしますが、
メンテナンス用に、以下のI/Fは準備いただけると。
0140root▲ ★
垢版 |
2005/11/20(日) 22:23:41ID:???0
以下というのは、あと >>129 のやつですね。

とりあえず、こんなところでどうでしょうか。
0141root▲ ★
垢版 |
2005/11/20(日) 22:25:14ID:???0
で、あと、
これまで出た中で、詰めなければいけない仕様って、あったっけか。
0142root▲ ★
垢版 |
2005/11/20(日) 22:28:18ID:???0
…で、私のほうでも、
bbs.cgi 見直してみるです。

この目的のために、かなり整理整頓したわけで。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況