peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。
【開発環境の工事現場】
また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/
関連スレなどは >>2-5 くらい
bbs.cgi再開発プロジェクト6
レス数が950を超えています。1000を超えると書き込みができなくなります。
2005/04/10(日) 16:15:47ID:a6rtBqIi0
881動け動けウゴウゴ2ちゃんねる
2005/09/22(木) 17:38:23ID:8luWl9mk0 う?
882動け動けウゴウゴ2ちゃんねる
2005/10/09(日) 23:46:12ID:o192VLCT0 よ?
2005/10/15(土) 13:05:17ID:XEAlpA8H0
か?
884root▲ ★
2005/10/21(金) 20:42:04ID:???0 BBS.CGI - 2005/10/21
live16/20/22 を対象に、緊急時に発動するしかけを投入。
live16/20/22 を対象に、緊急時に発動するしかけを投入。
2005/10/21(金) 20:48:12ID:ym2sR/ej0
おつです
887動け動けウゴウゴ2ちゃんねる
2005/10/24(月) 14:31:01ID:b+V7uzLR0 「書きこみ&クッキー確認」の画面で、
[上記全てを承諾して書き込む]を押さずに、ブラウザの「戻る」機能で戻った場合、
次回以降、確認画面が出ずに、いきなり書き込めてしまいます。
このバグを悪用して、
俺は2chに書き込んではいるが、投稿確認に書かれた事項は承諾していない
と主張している困ったさんがいます。
簡単に直せるなら、直してもらえないでしょうか。
(そうすると、その人は書き込まなくなるでしょうから、
その人によるスレの話題の激しい脱線・罵り合いから、
スレが救われます。)
[上記全てを承諾して書き込む]を押さずに、ブラウザの「戻る」機能で戻った場合、
次回以降、確認画面が出ずに、いきなり書き込めてしまいます。
このバグを悪用して、
俺は2chに書き込んではいるが、投稿確認に書かれた事項は承諾していない
と主張している困ったさんがいます。
簡単に直せるなら、直してもらえないでしょうか。
(そうすると、その人は書き込まなくなるでしょうから、
その人によるスレの話題の激しい脱線・罵り合いから、
スレが救われます。)
888▲ ◆SANUKI/VII
NGNG …
890▲ ◆SANUKI/VII
NGNG [上記すべてを承諾して書き込む]じゃなくて、
ワンクリみたいに強制的に承諾させちゃえばいいんじゃない?w
ワンクリみたいに強制的に承諾させちゃえばいいんじゃない?w
892674○part18 ◆IiIGjn5YT2
2005/10/24(月) 15:07:16ID:6jlOsF770 専ブラ側でも対応が必要になってきますね、この問題。
cookieがセットされていないなら承諾画面を出してformに
「bbs.cgiしか知らないテンポラリキー\0名前欄\0メールアドレス欄\0本文」
のハッシュ(md5かなにか?)をhiddenで入れておく。
でもって、実際の書き込み時にcookieをセットする、という形にならざるをえないのではないかと。
コスト削減のためにID算出と同じ種を使っても良いかも。
cookieがセットされていないなら承諾画面を出してformに
「bbs.cgiしか知らないテンポラリキー\0名前欄\0メールアドレス欄\0本文」
のハッシュ(md5かなにか?)をhiddenで入れておく。
でもって、実際の書き込み時にcookieをセットする、という形にならざるをえないのではないかと。
コスト削減のためにID算出と同じ種を使っても良いかも。
893674●part18 ◆IiIGjn5YT2
2005/10/24(月) 15:09:44ID:6jlOsF770 あ、リモホを入れていないのは携帯など毎回代わってしまうところを考慮に入れているからです。
2005/10/24(月) 15:36:15ID:Uzh/6H5L0
対応策として・・・
・クッキーに承諾したフラグを入れる入れないの問題
・カキコボタンにtarget=newを仕込むようにして新しい開くようにしてブラウザでバックできなくする
なんかがおもいつきでかけますが・・・どうでしょう>rootさん
・クッキーに承諾したフラグを入れる入れないの問題
・カキコボタンにtarget=newを仕込むようにして新しい開くようにしてブラウザでバックできなくする
なんかがおもいつきでかけますが・・・どうでしょう>rootさん
2005/10/24(月) 15:37:57ID:zrtRI6jl0
>>894
馬鹿は引っ込んでろ
馬鹿は引っ込んでろ
2005/10/24(月) 15:38:43ID:Uzh/6H5L0
>>894
あっと、これの後者はw3mとかのテキストブラウザの場合には使えませんね・・・
テキストブラウザでどれだけカキコがあるかにもよると思いますが、
かなり多いようであればnewWindow案は棄却だと思います。
あっと、これの後者はw3mとかのテキストブラウザの場合には使えませんね・・・
テキストブラウザでどれだけカキコがあるかにもよると思いますが、
かなり多いようであればnewWindow案は棄却だと思います。
897674●part18 ◆IiIGjn5YT2
2005/10/24(月) 15:41:06ID:6jlOsF770 >>894
二番目は意味がないです。
このケースではブラウザのバックボタンがつかえるかどうかはさしたる意味を持ちません。
それだけなら元のwindowでもう一度書き込みボタンを押せば突破できてしまいます。
二番目は意味がないです。
このケースではブラウザのバックボタンがつかえるかどうかはさしたる意味を持ちません。
それだけなら元のwindowでもう一度書き込みボタンを押せば突破できてしまいます。
2005/10/24(月) 15:48:33ID:Uzh/6H5L0
2005/10/24(月) 16:27:35ID:2Gpt3UV80
>>889
「この画面を表示させた後の書き込みは、すべて上記内容を承諾したものとみなします。」の
一文でも書き加えればいいと思われ。
で、そうするとボタンのキャプションがくどいから、ボタンは「書き込む」だけに変更。
大人の世界の内容なんだからシステムで解決できないなら
大人らしく承諾させる内容だけで勝負を。
「この画面を表示させた後の書き込みは、すべて上記内容を承諾したものとみなします。」の
一文でも書き加えればいいと思われ。
で、そうするとボタンのキャプションがくどいから、ボタンは「書き込む」だけに変更。
大人の世界の内容なんだからシステムで解決できないなら
大人らしく承諾させる内容だけで勝負を。
2005/10/24(月) 17:04:56ID:2Gpt3UV80
ボタンを押させる事が重要なのか。
それなら表示されるのと同じ内容をどこかにまとめておいて、
初回は強制表示で、2回目以降は表示させなくする判定をread.cgiで読み取って
read.cgiの書き込みボタンのキャプションを「○○を承諾して書き込み」に置き換えて、
承諾させる内容をまとめたページへの○○ってリンクを表示させるとか。
専用ブラウザは使うこと自体承諾したようなものだと思うし。
それなら表示されるのと同じ内容をどこかにまとめておいて、
初回は強制表示で、2回目以降は表示させなくする判定をread.cgiで読み取って
read.cgiの書き込みボタンのキャプションを「○○を承諾して書き込み」に置き換えて、
承諾させる内容をまとめたページへの○○ってリンクを表示させるとか。
専用ブラウザは使うこと自体承諾したようなものだと思うし。
2005/10/24(月) 17:23:35ID:uzN2YoDz0
今
U) bbs.cgiにアクセス
B) クッキーが無い
B) 確認画面&クッキー発行(←表示した段階で発行!)
U)承諾ボタン押して送信 or 承諾ボタン押さず再度投稿
B) クッキーがある&その他問題無し
B) 投稿完了
変更案
U) bbs.cgiにアクセス
B) クッキーが無い
B) 確認画面
U) 承諾ボタンを押す
B) もし($FORM{'submit'} が "承諾云々")なら {クッキー発行};
&他各種投稿の処理
B) 投稿完了 or 何かエラー(←この返事の段階で発行!)
U = ユーザーの操作
B = bbs.cgiの処理
U) bbs.cgiにアクセス
B) クッキーが無い
B) 確認画面&クッキー発行(←表示した段階で発行!)
U)承諾ボタン押して送信 or 承諾ボタン押さず再度投稿
B) クッキーがある&その他問題無し
B) 投稿完了
変更案
U) bbs.cgiにアクセス
B) クッキーが無い
B) 確認画面
U) 承諾ボタンを押す
B) もし($FORM{'submit'} が "承諾云々")なら {クッキー発行};
&他各種投稿の処理
B) 投稿完了 or 何かエラー(←この返事の段階で発行!)
U = ユーザーの操作
B = bbs.cgiの処理
>>902
手元に承諾form同等の機能だけもったform置いたら突破できますよ、それ。
手元に承諾form同等の機能だけもったform置いたら突破できますよ、それ。
2005/10/24(月) 17:41:20ID:uzN2YoDz0
承諾するとは言ったがその利用規約を承諾した覚えは無い。
というのが通用するならね。
というのが通用するならね。
2005/10/24(月) 17:42:55ID:uzN2YoDz0
投稿規約を承諾するとは言ったが投稿規約を承諾した覚えは無い
の方が良いかな。
の方が良いかな。
2005/10/24(月) 17:44:15ID:uzN2YoDz0
荒らし対策じゃないんで、投稿を防ぐ必要は無いんだよね、別に。
承諾さえされれば。
承諾さえされれば。
2005/10/24(月) 20:15:37ID:dTT/EBc00
>>901
それで解決ですな
それで解決ですな
2005/10/24(月) 21:19:20ID:b+V7uzLR0
承諾したくない困った人は、これを改良したとしても、
前回は承諾フォームが出て承諾して書き込んだが、
今回は承諾フォームが出なかったので、表示されもしない内容に承諾できるわけがない、承諾していない
と言い出すと思う。
書き込む度に、確認・承諾フォームを表示しないようにするのは、なぜでしょう。
転送量が厳しいから、その節約のためでしょうか。
前回は承諾フォームが出て承諾して書き込んだが、
今回は承諾フォームが出なかったので、表示されもしない内容に承諾できるわけがない、承諾していない
と言い出すと思う。
書き込む度に、確認・承諾フォームを表示しないようにするのは、なぜでしょう。
転送量が厳しいから、その節約のためでしょうか。
2005/10/24(月) 22:07:15ID:qWPT8NKZ0
つまりクッキーを持ってると表示されない・書き込めるということなら、確認画面を表示したことを
クッキーで確認していることとクッキーとともに書き込むデータをそぅしんしてきたら
自動的に確認画面の内容を承諾したとみなすと確認画面に書いてしまえばいいかも。
クッキーで確認していることとクッキーとともに書き込むデータをそぅしんしてきたら
自動的に確認画面の内容を承諾したとみなすと確認画面に書いてしまえばいいかも。
2005/10/24(月) 22:35:14ID:+k9SoKLc0
つーかシステム側で対応しなくても http://info.2ch.net/guide/ あたりに
2chは以下の条件を承諾した方のみ書き込み可能です。
・投稿者は、投稿に関して発生する責任が全て投稿者に帰すことを承諾します。
・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します
こんな感じの項目を作ればいいんじゃないの?
2chは以下の条件を承諾した方のみ書き込み可能です。
・投稿者は、投稿に関して発生する責任が全て投稿者に帰すことを承諾します。
・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します
こんな感じの項目を作ればいいんじゃないの?
2005/10/24(月) 22:44:31ID:qWPT8NKZ0
2005/10/24(月) 23:05:11ID:JW5bc+/z0
【きちんと】設置された承諾画面を【わざわざ】回避する措置を講じる者は
その時点で、それ相応の責任を負うと言わざるを得ないかと 何というか
その時点で、それ相応の責任を負うと言わざるを得ないかと 何というか
2005/10/24(月) 23:32:12ID:g/PC7NDH0
一つの方法は、承諾ボタンと同時に、拒否ボタンを作っておくことかな
そして「拒否ボタンを押す以外の否認の方法はありません」とでも書く。
いずれにせよ、言い逃れができない形にしないと、たとえば2ch発の
書籍を作ったりする際にいろいろ問題が発生してしまいそうな気もする。
そして「拒否ボタンを押す以外の否認の方法はありません」とでも書く。
いずれにせよ、言い逃れができない形にしないと、たとえば2ch発の
書籍を作ったりする際にいろいろ問題が発生してしまいそうな気もする。
2005/10/25(火) 01:09:02ID:x9TmyNgO0
まあ、建前で表示してるだけだし。
2005/10/25(火) 01:19:46ID:PSbrr/As0
>>914
建前…っても、
http://www.itmedia.co.jp/news/bursts/0204/15/13.html
みたいに、書籍の出版・販売差し止めと賠償を認めた判決もあるし。
2ちゃんねる編の書籍もある以上、あまりないがしろにするのもどうかと。
「拒否ボタン」いいね。
建前…っても、
http://www.itmedia.co.jp/news/bursts/0204/15/13.html
みたいに、書籍の出版・販売差し止めと賠償を認めた判決もあるし。
2ちゃんねる編の書籍もある以上、あまりないがしろにするのもどうかと。
「拒否ボタン」いいね。
2005/10/25(火) 08:01:32ID:x9TmyNgO0
通常の利用ではありえない方法で、規約に同意したかのような
データを送信して、そうであるから規約には同意していないのだ、
というのが通用するかどうかのな。
掲示板での議論ではなく、裁判で。
だから、まあ、建前を通していれば、不利になる事態は
そうは無いかな、とか。
そういった点で、通常の利用方法で、承諾しなくても承諾と
見なされている現状の改善が議題なわけだね。
データを送信して、そうであるから規約には同意していないのだ、
というのが通用するかどうかのな。
掲示板での議論ではなく、裁判で。
だから、まあ、建前を通していれば、不利になる事態は
そうは無いかな、とか。
そういった点で、通常の利用方法で、承諾しなくても承諾と
見なされている現状の改善が議題なわけだね。
2005/10/25(火) 08:16:28ID:x9TmyNgO0
承諾を回避して「そんな規約シラネ」というなら、拒否ボタンが
有ろうが無かろうが「そんな規約シラネ」なだけじゃん。
有ろうが無かろうが「そんな規約シラネ」なだけじゃん。
2005/10/25(火) 08:23:43ID:PSbrr/As0
承諾メッセージは送信時に明示されるからいいとして、
裁判だと、「不具合があるのを知っていたにも関わらず対策をとらなかった」
式の判断で負けちゃう場合もありますよ。(心配性)
無理でなければ、なんらかの対策をとってほしいです。
裁判だと、「不具合があるのを知っていたにも関わらず対策をとらなかった」
式の判断で負けちゃう場合もありますよ。(心配性)
無理でなければ、なんらかの対策をとってほしいです。
2005/10/25(火) 08:34:51ID:x9TmyNgO0
承諾が必要な事を知りながら承諾を偽装した
と判断される事を心配しようよ。
と判断される事を心配しようよ。
2005/10/25(火) 08:36:46ID:x9TmyNgO0
荒らし対策と規約承諾を別々のクッキーで扱うのが面倒なら、
>>910をしつつ、投稿ボタンを全て「規約を承諾して書き込む」
にして、
もし ($FORM{'submit'} が "承諾云々" ではない) なら
{DispError("ERROR!","規約を承諾しないと投稿できません!");}
とか
専ブラが全滅だけどね。対応されるまで。
>>910をしつつ、投稿ボタンを全て「規約を承諾して書き込む」
にして、
もし ($FORM{'submit'} が "承諾云々" ではない) なら
{DispError("ERROR!","規約を承諾しないと投稿できません!");}
とか
専ブラが全滅だけどね。対応されるまで。
2005/10/25(火) 08:39:35ID:PSbrr/As0
2005/10/25(火) 09:19:32ID:8gkXZmw80
まあ、最近インスパイアのこともあってぴりぴりしてるから
これを機に徹底的に話し合って詰めた方がいいかもね。
これを機に徹底的に話し合って詰めた方がいいかもね。
2005/10/25(火) 21:03:44ID:Y9ML3vBs0
924root▲ ★
2005/10/25(火) 21:25:44ID:???0 というか、あんなに防御していたのに、
スレッドが80超えちゃってたのがなぁ。
たぶんほとんど同時に何十本とスレ立て要求が来て、一気に追い込まれたんだと思われ。
何か、工夫が必要ですね。
スレ立て処理を実行中の船は、スレ立て処理をしないようにするとか。
グローバル変数でできるような気がするので、後で、考えてみよう。
スレッドが80超えちゃってたのがなぁ。
たぶんほとんど同時に何十本とスレ立て要求が来て、一気に追い込まれたんだと思われ。
何か、工夫が必要ですね。
スレ立て処理を実行中の船は、スレ立て処理をしないようにするとか。
グローバル変数でできるような気がするので、後で、考えてみよう。
2005/10/26(水) 01:25:19ID:KEQJ4CBE0
>>923
Monazilla/2.0 ですか?
Monazilla/2.0 ですか?
926root▲ ★
2005/10/26(水) 11:45:03ID:???0 うーむ、同じスレッドキーのスレができないようにするところって、
激しくうーむなような。
激しくうーむなような。
2005/10/26(水) 12:22:51ID:s6PZNUUX0
どうしたの?
安易なロック方式として、スレを立てるところで
どこか(板単位で分離が好ましい?)にunixtime%閾値をファイル名として/dev/nullからでもsymlinkを貼ってみて、
失敗したらスレたて拒否。成功したら建てる。
ガベージコレクトのタイミングで一番新しいヤツ以外を削除するようにすればおっけ。
マルチスレッド/タスクを考慮するならこれが一番コストがかからないと思いますがどうです?
閾値はスレたての最大間隔ね。最小1秒になることもあるけど2スレ連続ならまぁ許容範囲内ではないかと。
どこか(板単位で分離が好ましい?)にunixtime%閾値をファイル名として/dev/nullからでもsymlinkを貼ってみて、
失敗したらスレたて拒否。成功したら建てる。
ガベージコレクトのタイミングで一番新しいヤツ以外を削除するようにすればおっけ。
マルチスレッド/タスクを考慮するならこれが一番コストがかからないと思いますがどうです?
閾値はスレたての最大間隔ね。最小1秒になることもあるけど2スレ連続ならまぁ許容範囲内ではないかと。
2005/10/26(水) 13:03:24ID:BcSDlqwC0
ん?
Perlでのまともなlockの方法って、2年ほど前の再開発スレでrootさんが話題にしてましたよね。
そのレベルは脱した上で「うーむ」なことに成っているのだと解釈。
Perlでのまともなlockの方法って、2年ほど前の再開発スレでrootさんが話題にしてましたよね。
そのレベルは脱した上で「うーむ」なことに成っているのだと解釈。
2005/10/26(水) 13:24:34ID:s6PZNUUX0
ほぼ同時にスレ立て要求→同時に数十本もスレ立っちゃった→スレッドキーみんな同じだ→しかも今夜が山だ
こんなところ?
こんなところ?
931root▲ ★
2005/10/26(水) 13:29:31ID:???0 今の bbs.cgi は、同じスレッドキーのやつが立たないようにするコードが
ちゃんと入っているです。
ようは、その実装方法がうーむだと。
ちゃんと入っているです。
ようは、その実装方法がうーむだと。
932root▲ ★
2005/10/26(水) 13:51:08ID:???0 do {
#サブジェクトがあれば新規スレなのでキーを現在に設定
$GB->{FORM}->{'key'} = $GB->{NOWTIME};
#.datファイルの設定
$DATAFILE = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
} while ( -e $DATAFILE ) ;
これって、$DATAFILE が既に存在してたら、無限ループに陥るんではないかしら。
#サブジェクトがあれば新規スレなのでキーを現在に設定
$GB->{FORM}->{'key'} = $GB->{NOWTIME};
#.datファイルの設定
$DATAFILE = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
} while ( -e $DATAFILE ) ;
これって、$DATAFILE が既に存在してたら、無限ループに陥るんではないかしら。
933stream ◆ap/yuix/tw
2005/10/26(水) 14:15:06ID:qwHTUNtV0 不動楽さんが入れたやつですね
2chの動作報告はここで。 パート15
http://qb5.2ch.net/test/read.cgi/operate/1090485214/676-685
==========================================
676 削除車 ★[sage] 04/11/01 23:25:56 ID:???
お疲れさまです。ちょっとご相談があります。
最近ニュース速報(VIP)が、非常に板飛び回数が多いです。
少しお話を窺ったところ、同じタイミングでスレが立ったときに合体を起こして、板が飛ぶみたいです。
お手数ですが、ちょっとcgiの方を確認していただけますか?
(それとも一般的なことで、VIPでたまたま多く発生しているだけなんでしょうか)
よろしくお願いします。
★板のスレ一覧復帰&修正依頼21★
http://qb5.2ch.net/test/read.cgi/operate/1096548247/677-682
679 不動楽 ★ [sage] 04/11/02 00:45:12 ID:???
>>676
原因らしき個所は炙り出せたのですが、
その変数にからむ処理を上から眺めていきますので、
少しお時間を頂きたいです。
>(それとも一般的なことで、VIPでたまたま多く発生しているだけなんでしょうか)
ex7だけでなく、全板のbbs.cgiで同じことが起こる可能性があるようです。
684 root▲ ★ [sage] 04/11/02 02:08:27 ID:???
直すときには、安易な flock() は控えてほしいなぁと強くおながいしておきますです。
685 不動楽 ★ [sage] 04/11/02 02:13:12 ID:???
>>684
排他処理をしていないのが原因、というわけではないので大丈夫かと思うです。
==========================================
2chの動作報告はここで。 パート15
http://qb5.2ch.net/test/read.cgi/operate/1090485214/676-685
==========================================
676 削除車 ★[sage] 04/11/01 23:25:56 ID:???
お疲れさまです。ちょっとご相談があります。
最近ニュース速報(VIP)が、非常に板飛び回数が多いです。
少しお話を窺ったところ、同じタイミングでスレが立ったときに合体を起こして、板が飛ぶみたいです。
お手数ですが、ちょっとcgiの方を確認していただけますか?
(それとも一般的なことで、VIPでたまたま多く発生しているだけなんでしょうか)
よろしくお願いします。
★板のスレ一覧復帰&修正依頼21★
http://qb5.2ch.net/test/read.cgi/operate/1096548247/677-682
679 不動楽 ★ [sage] 04/11/02 00:45:12 ID:???
>>676
原因らしき個所は炙り出せたのですが、
その変数にからむ処理を上から眺めていきますので、
少しお時間を頂きたいです。
>(それとも一般的なことで、VIPでたまたま多く発生しているだけなんでしょうか)
ex7だけでなく、全板のbbs.cgiで同じことが起こる可能性があるようです。
684 root▲ ★ [sage] 04/11/02 02:08:27 ID:???
直すときには、安易な flock() は控えてほしいなぁと強くおながいしておきますです。
685 不動楽 ★ [sage] 04/11/02 02:13:12 ID:???
>>684
排他処理をしていないのが原因、というわけではないので大丈夫かと思うです。
==========================================
934root▲ ★
2005/10/26(水) 14:19:31ID:???0 それについて書こうと思ったら、>>933 が。
それは、これですね。
上記よりも後、最後ところでやっているです。
if($GB->{FORM}->{'subject'} ne "" && -e $DATAFILE){
&DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
ということで、それはクラシックさんが入れたところではないと思います。
昔からあったところだと思う。
*以下推測*
たぶん、昔は do 〜 while のところでもtime; していたんでしょう。
それなら、1秒経てば条件が変わります(ループを抜けるかは別)。
それは、これですね。
上記よりも後、最後ところでやっているです。
if($GB->{FORM}->{'subject'} ne "" && -e $DATAFILE){
&DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
ということで、それはクラシックさんが入れたところではないと思います。
昔からあったところだと思う。
*以下推測*
たぶん、昔は do 〜 while のところでもtime; していたんでしょう。
それなら、1秒経てば条件が変わります(ループを抜けるかは別)。
935root▲ ★
2005/10/26(水) 14:20:57ID:???0 コピペみすった。
コメントつきなので、ほぼ間違いないです。
#==================================================
# 板飛び回避策
#==================================================
if($GB->{FORM}->{'subject'} ne "" && -e $DATAFILE){
&DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
コメントつきなので、ほぼ間違いないです。
#==================================================
# 板飛び回避策
#==================================================
if($GB->{FORM}->{'subject'} ne "" && -e $DATAFILE){
&DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
936root▲ ★
2005/10/26(水) 14:39:15ID:???0 で、ここの制御を変えようと思うわけです。
安易に、
・live系は既にあったらごめんなさい
・他はスレッドキーを+1しながら、最大3回ぐらい試してみる
ってことにしようかなと。
安易に、
・live系は既にあったらごめんなさい
・他はスレッドキーを+1しながら、最大3回ぐらい試してみる
ってことにしようかなと。
937root▲ ★
2005/10/26(水) 16:22:21ID:???0 BBS.CGI - 2005/10/26
$GB->{FORM}->{'key'} = &mumumuAllocateThreadKey($GB);
$DATAFILE = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
にした。
で、mumumu AllocateThreadKeyの中身は >>936 にしたつもり。
これで、
・bbs.cgi謎の暴走
・スレ立て混雑時にサーバ劇重
が、少しでも改善されるといいかなと。
$GB->{FORM}->{'key'} = &mumumuAllocateThreadKey($GB);
$DATAFILE = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
にした。
で、mumumu AllocateThreadKeyの中身は >>936 にしたつもり。
これで、
・bbs.cgi謎の暴走
・スレ立て混雑時にサーバ劇重
が、少しでも改善されるといいかなと。
スレッドキーは毎秒かわるんでしたっけ、でしたらこんなのはどうですか?
0. ロックの待ち番号を0で初期化
1. ロックの待ち番号をファイル名にして/dev/nullからsymlinkしてみる
成功; → 6へ
2. ロックの待ち番号を1カウントアップ
3. ロックの待ち番号最大値を超えてるかチェック
超えてる: → 建てたい人大杉表示にして諦める
4. 1秒まつ
5. 1へ
6. ロックの待ち番号が0か?
はい: 9へ
7. 0.5秒待つ。
8. ロックの待ち番号-1をsymlinkしてみる
失敗: → 7へ
成功:
ロックの待ち番号をunlink
ロックの待ち番号を-1
6へ
9. スレたて処理
0. ロックの待ち番号を0で初期化
1. ロックの待ち番号をファイル名にして/dev/nullからsymlinkしてみる
成功; → 6へ
2. ロックの待ち番号を1カウントアップ
3. ロックの待ち番号最大値を超えてるかチェック
超えてる: → 建てたい人大杉表示にして諦める
4. 1秒まつ
5. 1へ
6. ロックの待ち番号が0か?
はい: 9へ
7. 0.5秒待つ。
8. ロックの待ち番号-1をsymlinkしてみる
失敗: → 7へ
成功:
ロックの待ち番号をunlink
ロックの待ち番号を-1
6へ
9. スレたて処理
939root▲ ★
2005/10/26(水) 16:30:25ID:???0 >>938
最初はそういうのを考えていたんですが、
1秒とか0.5秒とか待つのが、いやだったです。
スレッドキーは所詮本当の時間とあっている必要はないので、
・live系はごめんなさい
・通常系は 0 +1 +2 を試して、だめならごめんなさい
ぐらいのいい加減さにして、一刻も早くbbs.cgiに終わっていただくことにしました。
最初はそういうのを考えていたんですが、
1秒とか0.5秒とか待つのが、いやだったです。
スレッドキーは所詮本当の時間とあっている必要はないので、
・live系はごめんなさい
・通常系は 0 +1 +2 を試して、だめならごめんなさい
ぐらいのいい加減さにして、一刻も早くbbs.cgiに終わっていただくことにしました。
それだと、多台数とかからスレたて攻撃が同時に来たときにやっぱり被害が起こることは避けれないと思いますがどうでしょう。
2005/10/26(水) 16:50:01ID:BcSDlqwC0
計算量がO(n * log n)で収まれば収束しないか?
2005/10/26(水) 16:51:55ID:/5B2u2B30
メモリ上に前回のスレキーを持たせたファイルを置いてそれを参照
とかは無理だろうしなぁ…
(素人案だし毎回読み込みとか(ry)
とかは無理だろうしなぁ…
(素人案だし毎回読み込みとか(ry)
943root▲ ★
2005/10/26(水) 17:00:02ID:???0 >>940
if ( ! -e datファイル ) {
return それでOKよん;
} elsif ( ! live系 ) {
for ( $i = 0; $i < $maxtries; $i++) {
スレッドキーを一つずつ増やして存在チェックし、なかったやつを
return これ使ってちょ;
}
&error(ごめんなさい);
って、なっています。
というわけでおっしゃるとおり、タイミングにより突破もありえます。
その場合は、>>935 でひっかかると。
でもそれにしても、ほんとうは完璧じゃないです。
雪だるま作戦では、このへんはバックエンドプロセスに依頼する形になるので、
その時に、きちんと対応することになるかなと。
if ( ! -e datファイル ) {
return それでOKよん;
} elsif ( ! live系 ) {
for ( $i = 0; $i < $maxtries; $i++) {
スレッドキーを一つずつ増やして存在チェックし、なかったやつを
return これ使ってちょ;
}
&error(ごめんなさい);
って、なっています。
というわけでおっしゃるとおり、タイミングにより突破もありえます。
その場合は、>>935 でひっかかると。
でもそれにしても、ほんとうは完璧じゃないです。
雪だるま作戦では、このへんはバックエンドプロセスに依頼する形になるので、
その時に、きちんと対応することになるかなと。
944root▲ ★
2005/10/26(水) 17:03:08ID:???0 てなわけで、-e でdatファイルの存在をチェックしていたり、
924の処理のところみたいに utime でdatのタイムスタンプ更新したりすることは
雪だるま環境ではそのままではむりぽなわけで、
そういったAPIを、入れ込んでほしいということなわけです。
一つ海外出張がキャンセルになってちょっと落ち着いたので、
このへんを、ぼちぼちあっちですすめようかなと。> SunOSさん
924の処理のところみたいに utime でdatのタイムスタンプ更新したりすることは
雪だるま環境ではそのままではむりぽなわけで、
そういったAPIを、入れ込んでほしいということなわけです。
一つ海外出張がキャンセルになってちょっと落ち着いたので、
このへんを、ぼちぼちあっちですすめようかなと。> SunOSさん
946▲ ◆cZfSunOs.U
2005/10/26(水) 22:28:35ID:ICyD85HJ0 ん〜と,現在の bbsd ではスレ立て時の key をインクリメントしながら一定回数(現在は16)
リトライするようになっています.その際,open() を O_CREAT|O_EXCL フラグ付きで
呼び出しているため,ファイルの存在確認と生成はアトミックになっているはずです.
当初はスレ立て時の key としては bbsd 側の現在時刻を用いていましたが,
それだと headline に渡す key とのずれが生じる問題も発生したため,
現在は bbs.cgi 側から渡された key を使用するようになっています.
ただ,上記の key のインクリメントが発生するとやはりずれが生じることに
なるので,そこの調整をする仕組みが必要になりますかね.
リトライするようになっています.その際,open() を O_CREAT|O_EXCL フラグ付きで
呼び出しているため,ファイルの存在確認と生成はアトミックになっているはずです.
当初はスレ立て時の key としては bbsd 側の現在時刻を用いていましたが,
それだと headline に渡す key とのずれが生じる問題も発生したため,
現在は bbs.cgi 側から渡された key を使用するようになっています.
ただ,上記の key のインクリメントが発生するとやはりずれが生じることに
なるので,そこの調整をする仕組みが必要になりますかね.
947▲ ◆cZfSunOs.U
2005/10/26(水) 22:37:27ID:ICyD85HJ0 単純に,bbsd 側ではリトライせず,key をインクリメントした上でのリトライは
bbs.cgi 側に任せるという形でもいいんですかね.同じ key を持つ dat が
存在した場合,bbsd は EEXIST に相当するエラーメッセージを返すことになるんで.
bbs.cgi 側に任せるという形でもいいんですかね.同じ key を持つ dat が
存在した場合,bbsd は EEXIST に相当するエラーメッセージを返すことになるんで.
2005/10/27(木) 01:37:41ID:MHLp6DNM0
ロックのループにはまった時はスレキーとかに使うUNIX時間なんかを
新たに取り直した方がよくね?
でもスレ立て処理は排他ロックさせずに複数同時進行してそうだし、
ロックのループが1秒待ちでもなさそうだから関係ない話か。
新たに取り直した方がよくね?
でもスレ立て処理は排他ロックさせずに複数同時進行してそうだし、
ロックのループが1秒待ちでもなさそうだから関係ない話か。
951▲ ◆cZfSunOs.U
2005/10/27(木) 19:57:03ID:SzSv4IzM0 >>949 成功時は key,失敗時はエラーメッセージを返し,戻り値が
数値か文字列かを bbs.cgi 側で判定してもらうというのはどうでしょうか?
スレ立てが失敗する原因は EEXIST 以外にもあり得るので
(といっても実際はまれでしょうが),エラーの内容がわかった方が
異常発見もしやすくなるかと思いますし.
数値か文字列かを bbs.cgi 側で判定してもらうというのはどうでしょうか?
スレ立てが失敗する原因は EEXIST 以外にもあり得るので
(といっても実際はまれでしょうが),エラーの内容がわかった方が
異常発見もしやすくなるかと思いますし.
953root▲ ★
NGNG ということで、立てました。
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/
ぼちぼち、すすめていこうかと。
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/
ぼちぼち、すすめていこうかと。
2005/10/29(土) 12:11:11ID:nNATzveB0
てすと
955▲
2005/10/30(日) 04:51:30ID:R0mqD16u0 キャップの▲ってなんか意味あるとですか?
2ch全板で合計して 平均何秒ごとくらいにスレが立っているのでしょうかえ?
2ch全板で合計して 平均何秒ごとくらいにスレが立っているのでしょうかえ?
2005/10/30(日) 14:29:53ID:xwQs58530
957root▲ ★
NGNG うーむ、
$GB->{MD5DATE} = sprintf("%04d_%02d_%02d",
substr($year + 1900, -2), $mon + 1, $mday);
これ、substrのところがたぶん -4 の間違いなんだと思うけど、
ここを変えるとこのあとのIDの種ファイルを更新するところで、
「日付変わった」と思われて、IDが変わっちゃうですね。
まずoperate2で試して、ID変わっちゃうとしたら、
23:00過ぎに、やることにしよう。そうしよう。
$GB->{MD5DATE} = sprintf("%04d_%02d_%02d",
substr($year + 1900, -2), $mon + 1, $mday);
これ、substrのところがたぶん -4 の間違いなんだと思うけど、
ここを変えるとこのあとのIDの種ファイルを更新するところで、
「日付変わった」と思われて、IDが変わっちゃうですね。
まずoperate2で試して、ID変わっちゃうとしたら、
23:00過ぎに、やることにしよう。そうしよう。
958root▲ ★
NGNG これ直したら、SunOS さんのからの質問 [1-2] のところの仕様が確定すると。
959root▲ ★
NGNG960どくどくさぼてん
2005/10/31(月) 18:52:32ID:e+pnaIH20 そもそも-4というよりは、
× substr($year + 1900, -2)
○ $year + 1900
みたいなかんじっぽいな
%04dに文字列渡してどうするんじゃと
× substr($year + 1900, -2)
○ $year + 1900
みたいなかんじっぽいな
%04dに文字列渡してどうするんじゃと
962root▲ ★
NGNG その直上のここは、どうすればいいべか。
$GB->{DATE} = sprintf("%02d/%02d/%02d %02d:%02d:%02d",
substr($year + 1900, -2), $mon + 1, $mday, $hour, $min, $sec);
$GB->{DATE} = sprintf("%02d/%02d/%02d %02d:%02d:%02d",
substr($year + 1900, -2), $mon + 1, $mday, $hour, $min, $sec);
2005/10/31(月) 18:56:20ID:tkwMzh3I0
2005/10/31(月) 18:59:17ID:tkwMzh3I0
ってか $GB->{DATE} って何に使うんですか?
2005/10/31(月) 19:00:53ID:tkwMzh3I0
>>957が -4 だと思ったのはなぜ?
その部分だけ見た場合は、現実的(2chがいつまで存在するか)に考えて、 -4でも-2でも変わんないと思うし
その部分だけ見た場合は、現実的(2chがいつまで存在するか)に考えて、 -4でも-2でも変わんないと思うし
966どくどくさぼてん
2005/10/31(月) 19:01:46ID:e+pnaIH20 >>962
ん?なんだそら?それ現在dat及びに出力される形式と違ってるみたいけど
どっかべつのところでつかってるんだろか
どうしてもそれで直したければ
substr($year + 1900, -2) → $year % 100
てところじゃないんすかね
ん?なんだそら?それ現在dat及びに出力される形式と違ってるみたいけど
どっかべつのところでつかってるんだろか
どうしてもそれで直したければ
substr($year + 1900, -2) → $year % 100
てところじゃないんすかね
967root▲ ★
NGNG 投稿日: とか、あと内部的にいくつか。
968root▲ ★
NGNG969root▲ ★
NGNG IDを、じゃなくて、IDの種をか。
970るぅりん☆6歳@ギコナビ ◆IAc6UigumM
2005/10/31(月) 20:29:08ID:MAFKa8FN0 >966
後半、正解
後半、正解
2005/10/31(月) 21:44:31ID:FYOQZkFB0
気づいたときに自然な方法に修正しないと、バグが仕様化して後で痛い目を見る。
……と、厳密なのって日本人エンジニアとポーランド人数学者の特徴だよな。そのノリは好きだけど。
……と、厳密なのって日本人エンジニアとポーランド人数学者の特徴だよな。そのノリは好きだけど。
2005/10/31(月) 22:28:24ID:381okt4U0
2005/11/01(火) 01:53:58ID:RDlLoN8A0
あるスレッドの次スレという物が立ったらあるスレッドを速攻で足切りにできませんかねぇ?
スレを立てた人間によるスレストというか。
次スレが立った、じゃあ(無駄なレスで)埋めるって流れが嫌いなだけですけどね。
スレを立てた人間によるスレストというか。
次スレが立った、じゃあ(無駄なレスで)埋めるって流れが嫌いなだけですけどね。
2005/11/01(火) 03:47:02ID:ZJKg5H9y0
次スレ立ての競争が無意味に苛烈になるだけなのでとても賛成できない。
めちゃめちゃなスレを立てておいて「次スレ」と主張し、現行スレを無理矢理
足切りに…なんて事をする輩が湧くのが目に見えているぞ。
「スレッドは1000ぎりぎりまで使い切ってから移行しましょう」という運動でも
立ち上げる方がまだ現実的だよ。
めちゃめちゃなスレを立てておいて「次スレ」と主張し、現行スレを無理矢理
足切りに…なんて事をする輩が湧くのが目に見えているぞ。
「スレッドは1000ぎりぎりまで使い切ってから移行しましょう」という運動でも
立ち上げる方がまだ現実的だよ。
2005/11/01(火) 09:50:27ID:OIcg6Yo20
1000で自動次スレ立ては?
2005/11/01(火) 10:16:41ID:cAD241lE0
2005/11/01(火) 12:41:21ID:FnB9EIr90
そもそもそんなシステムが必要な理由からしてわからないですよ。
2005/11/01(火) 14:30:49ID:rk1nvBlM0
そろそろスレ違いなんで、雑談スレへでもどうぞって感じ
2005/11/02(水) 02:28:21ID:U9irf3Pa0
>>980
すんません、投げるところを間違えたみたいですね。
とにかく、このスレッドみたいに980を超えた後、埋めるかとか言い出す奴とか
実際に埋めてしまう奴とかを撲滅できればいいんですよ。
終わり際に見苦しいというか。
すんません、投げるところを間違えたみたいですね。
とにかく、このスレッドみたいに980を超えた後、埋めるかとか言い出す奴とか
実際に埋めてしまう奴とかを撲滅できればいいんですよ。
終わり際に見苦しいというか。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 『フジの社員は“文春ひどい”と騒いでいる』 フジテレビの窮地に「菅田将暉もドラマ出演を断った」「CMが全く売れていない」 [冬月記者★]
- 【クルマ】「軽自動車しか買えない」年収400万円時代の高すぎる自動車価格★4 [七波羅探題★]
- 日銀総裁、食料品値上がりを懸念 衆院委員会で「一時的でない」 ★3 [蚤の市★]
- 【米価】“消えた21万トン”流通目詰まりか…備蓄米放出へ 価格高騰に歯止めか ★5 [Ikhtiandr★]
- 増える「外国人消防団」 反対の声「乗っ取られる」の“誤解”と被災時に期待される役割とは [少考さん★]
- 妻の暴言「お前はATMだ」 男性のDV被害相談が最多 男女平等意識高まりで顕在化 [ぐれ★]
- 八潮トラック「落ちたーー!道路の穴に落ちてしまったのですが」消防局「ちょっとそこで静かにしててくれる」 [691850561]
- 【安倍悲報】1月の企業物価、脅威の4.2%上昇🤩晋さんありがとう! [359965264]
- トランプ親分「紙ストローはゴミ。廃止させる😡」
- 【岸田悲報】報道記者「USAIDで騒いでる連中は陰謀論者を煮詰めた残りカスの地獄、まともな知能を持っている大人は近付いてはいけない」 [357222248]
- 🏡
- この国は終わってるよ…〈年金月10万円〉〈時給1,280円〉週5のバイトで食いつなぐ79歳男性 [481941988]