X



トップページ運用情報
1001コメント347KB

bbs.cgi再開発プロジェクト 3

■ このスレッドは過去ログ倉庫に格納されています
00012chtubo愛用者〜ヘ(゚д゚ヘ))))))〜61 ◆yBEncckFOU
垢版 |
04/02/13 19:08ID:o3jHs/Mb
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

関連スレ
【Project peko】2ch特化型サーバ構築作戦 Part6
http://qb3.2ch.net/test/read.cgi/operate/1076413123/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ
http://qb3.2ch.net/test/read.cgi/operate/1073058944/
BBQ システム(公開串リストメンテ)
http://qb3.2ch.net/test/read.cgi/operate/1073061576/
【連投規制】Samba24 情報要望スレ その3
http://qb3.2ch.net/test/read.cgi/operate/1075568934/
【広告】Rock54【自動排除】 3
http://qb3.2ch.net/test/read.cgi/operate/1074735308/
■ 新しいサーバで read.cgi が正しく動かない問題。 (dat落ち)
http://qb.2ch.net/test/read.cgi/operate/1047840578/


前スレ
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/test/read.cgi/operate/1053067870/
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/test/read.cgi/operate/1069144193/
0371仕事人 ★
垢版 |
04/02/29 19:49ID:???
いったい何をしているルーチンなんだろぅ
0372動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 20:11ID:aErj63/K
ファイルロックの名残?
総帥に事情聴取してからにしてください。
こないだのiスクリプト消滅騒ぎのような事態は避けないと。
0373動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 20:12ID:2mqLuO2T
あらためて
・複数のプロセスが999レス目のつもりで書き込む→1000オーバー(ただしストッパーは書かれない)
・1000オーバーなので >>330 でchmod
と予想してみる。

ってことで、>>330 の1001ストッパー書き込みも復活すれば……。
……泥縄だなぁ。
0375 ◆qb.x27/m96
垢版 |
04/02/29 20:17ID:W0afuNnL
ええとこれとまったく同じメッセージが書いてある部分のソースがないのですがどの部分でしょうか
 ↓
ERROR:このスレッドには書けません!


あと $outdat っての値が代入されている部分のソースもないし。。
0377 ◆qb.x27/m96
垢版 |
04/02/29 20:24ID:W0afuNnL
ええとこういう風になっているはずなのですけど。

DispError("ERROR!","ERROR:このスレッドには書き込めません!");


----
ERROR!
ERROR:このスレッドには書けません!
0378サザン ★
垢版 |
04/02/29 20:26ID:???
>>377
なんか重複してるけど、一緒です。

#.datが存在してないか書けないならばいばい
unless(-w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書けません!");
}
#my $datsizeis =(stat("$DATAFILE"))[7];
#unless( $datsizeis <= 512000){
#DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
#}
unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
unless( -s $DATAFILE <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
0379 ◆qb.x27/m96
垢版 |
04/02/29 20:26ID:W0afuNnL
あ間違えたました、、こうです

DispError("ERROR!","ERROR:このスレッドには書けません!");
0381サザン ★
垢版 |
04/02/29 20:29ID:???
>>370
chmod 0555 が失敗したときか、
chmod 0555 の後に書き込めるようになっちゃったときの処理ですかねー、
あんまり意味がないような気もする、、
0384仕事人 ★
垢版 |
04/02/29 20:52ID:???
謎がなぞ呼ぶ殺人事件〜
0386仕事人 ★
垢版 |
04/02/29 20:56ID:???
>>383
作っていないような気がする。。。
0388仕事人 ★
垢版 |
04/02/29 20:58ID:???
ようし、外してみよう。


#if(-w $dattemp && $lognum > 999){
##open(OVER, ">>$dattemp");
##print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
##close(OVER);
##chmod(0555, $dattemp);
##$lognum++;
#
#if(-w $dattemp){
#my $datdat = $DATPATH . $key;
#my $tmpdat = $DATPATH . $key . ".tmp";
#my $success;
#open(COPY, "cp $dattemp $datdat |");
#close(COPY);
#$success = 0;
#until($success){ $success = rename($datdat, $dattemp); }
#chmod(0555, $dattemp);
#unlink($tmpdat);
#}
#}
0392仕事人 ★
垢版 |
04/02/29 21:02ID:???
>>391
何人の人がそう思いチャレンジしてきたことか・・・
いまだ勝者は一人としていない、暗黒の世界から生還したものはいない。
0393動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:03ID:ESMdxJrR
>>390
たぶん
/dat/key.dat に書き込んで
/dat/key.dat を /dat/key にコピーして ←たぶん無駄
/dat/key を /dat/key.dat にリネームして ←たぶん無駄
/dat/key.dat を書込み禁止にして
/dat/key.tmp をあぼーんしている ←たぶん無駄
かと……。
0398Vsw ◆OoVswP.T/I
垢版 |
04/02/29 21:20ID:qAGI7Tit
芸スポなんですけどいいですか?
【サッカー】日本代表選手7人が合宿中に規則違反で飲酒★2
http://news6.2ch.net/test/read.cgi/mnewsplus/1077996750/

1001ストッパーが壊れてるのか
ストップしないんですか。
0400仕事人 ★
垢版 |
04/02/29 21:21ID:???
うーむ

別の土俵で戦っていたのか。。。
0402Vsw ◆OoVswP.T/I
垢版 |
04/02/29 21:25ID:qAGI7Tit
各板、片っ端から1000overしてるようです。
0404仕事人 ★
垢版 |
04/02/29 21:25ID:???
これが期待通りの動作をしていないってことっすね

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
0407仕事人 ★
垢版 |
04/02/29 21:26ID:???
>>338 以前まで rewind 中。。。
0408動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:26ID:kaI5hUlb
テストとしてだけど1000を超えたらあらゆる変数を出力しまくってみては
0409動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:26ID:JvRnpXfA
1001復活きぼんぬ
0410 ◆LBZUBURIYM
垢版 |
04/02/29 21:29ID:jysovvLt
1010のやつを生かしておいて,変数を色々出力して検証してみてはどうでしょ?
0412動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:30ID:CtJQij/n
うはwwwwwwwwwww
0415Vsw ◆OoVswP.T/I
垢版 |
04/02/29 21:31ID:qAGI7Tit
現状>>403が一番凄い。
3000突破してる・・・

でもどうやら止まったみたいですね。
0416仕事人 ★
垢版 |
04/02/29 21:32ID:???
thinking time.....

どぞ↓
0420動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:33ID:Oky00rr1
いっそのこと1001ストッパー廃止でいいじゃん。
0424 ◆Nm5090363w
垢版 |
04/02/29 21:46ID:ESMdxJrR
>>416
>>404を確かめるために
試験的に >>353 の if($lognum > 1010) を if($lognum > 300) とかにして
300を超えたスレッドに書き込んでみて
「緊急緊急緊急!!」が出るかどうかを見てみるのはどうでしょか。
0426 ◆Nm5090363w
垢版 |
04/02/29 21:49ID:ESMdxJrR
>>425
いや、いきなり全鯖に配るわけじゃなくて、(金) でテストするだけでも、と……。
0428動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:50ID:Oky00rr1
>>426
(金)ではやり辛いでしょ。
いっそのことN速で実験しましょ。
0431動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 21:52ID:kaI5hUlb
いろんなとこにフラグ立てまくって出力させてみてほしいです
どこが実行できていて、どこができてないのかよく分かんない
0433仕事人 ★
垢版 |
04/02/29 22:19ID:???
ん?

もう解ったんでないのか?

違うところで戦っていたということが、
0434動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 22:23ID:kaI5hUlb
>>433
その言葉の意味が分かんねっす・・
0435 ◆Nm5090363w
垢版 |
04/02/29 22:26ID:ESMdxJrR
ひょっとしたら my @logdat = <OUT>; の前に seek(OUT, 0, 0); を入れるといいかも(←自信なし)。
0436動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 22:27ID:P807886c
うちのwindowsだと、

if (open(OUT, "+>>$DATAFILE"))
{
#この時点でファイル末尾にseekされてる
my @logdat = <OUT>;
my $lognum = @logdat;

これだと@logdatは空になっちゃうんだけど、、、

if (open(OUT, "+<$DATAFILE"))
my @logdat = <OUT>;
my $lognum = @logdat;

じゃないすかね
0438 ◆Nm5090363w
垢版 |
04/02/29 22:30ID:ESMdxJrR
>>436
うちのcygwinだと"+>>"でopenした時点でファイル先頭にseekされてました。
あと、追記モードじゃないと書き込みがぶつかったときにヤバいです。
0440 ◆qb.x27/m96
垢版 |
04/02/29 22:34ID:W0afuNnL
>>433

ええと>>330に手を加えていたものが>>350
その後>>353でテストして>>330あたりに戻ったということなのかな。。
どのソースを元にやればいいのか、、
ちょっとゆっくりやってほしい、、
0445動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 22:55ID:VMV/4FdL
思ったんだけど
bbs.cgiを置き換えちゃうと不具合が出たときに面倒だし
変数を表示しようとしてもなかなか難しい。

そこで、bbs_test.cgiにして実験する。
で、こいつにPOSTするのも面倒だから
POST先だけを変えたread_test.cgiを作り
テスト用の鯖に入れる。
で、書き込みテストはそっちでやって、内部の変数や状態をずらずらと表示する。
ただ、1000到達時のテストは難しいかな。
0446仕事人 ★
垢版 |
04/02/29 23:00ID:???
open(OUT, ">>$DATAFILE");
print OUT "$outdat\n";
close(OUT);

dat 追記部分は元にもどす。
0447仕事人 ★
垢版 |
04/02/29 23:01ID:???
そして、
ここに持ってくる

sub MakeWorkFile{
my $key = @_[0];
my $workfile = $TEMPPATH . $key . ".html";
my $dattemp = $DATPATH . $key . ".dat";
my (@messx,@content,@logdat);
my ($lognum,$mailto,$time,$brmax,$topnum,$firstlog,$name,$mail,$subject,$message);

open(RDAT,"<$dattemp");
@logdat=<RDAT>;#ログを配列に読み込む
close(RDAT);

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1010)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
open(OUT,"<$dattemp");
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
0448仕事人 ★
垢版 |
04/02/29 23:01ID:???
これを ニュー速に入れてみよう
0452仕事人 ★
垢版 |
04/02/29 23:05ID:???
>>450
1,000 取ってみてくだせー
0453 ◆Nm5090363w
垢版 |
04/02/29 23:05ID:ESMdxJrR
>>447 を見て気づいたこと。
・「緊急緊急緊急!!」が書き込み終わった後になる
・1001ストッパー書き込み時のオープンモードが読み込みモード
0455動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 23:07ID:JvRnpXfA
ニュー速1000きっちりで終わったよ
0457仕事人 ★
垢版 |
04/02/29 23:08ID:???
>>453
ども 、
直してみた


if($lognum > 1010) # ここはこないと予想
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
open(OUT,">>$dattemp");
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
0458仕事人 ★
垢版 |
04/02/29 23:09ID:???
>>456
微妙
0459未承諾広告※ ◆TWARamEjuA
垢版 |
04/02/29 23:10ID:47xPabMI
>>447
open(OUT,"<$dattemp");
print OUT "1001<><>Over 1000 Thread<>この

鰓がでるよね?
もっと餅付いてくだちい。。。
0460動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 23:22ID:fKbOd8s3
chmod(0666, $dattemp);がchmod(0555, $dattemp);よりあとに実行されるとは考えにくいけど、
念のため、
if($lognum > 1010)
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR〜");
}
としてもいいかも。
0461動け動けウゴウゴ2ちゃんねる
垢版 |
04/02/29 23:24ID:Jf+5mxoZ
ウスターの一部しか開示されないので
処理の流れがわからない。。。

あと、別のところで問題がある場合も
思い込んでる場所のみを開示&思考なので発見が遅れる。。。

な予感('-')
0464 ◆qb.x27/m96
垢版 |
04/02/29 23:26ID:W0afuNnL
if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
----

この部分ですけど実際にファイルをopenしているのはどこなんだろう、、
そして$outdat には何が入っているのだろう、、

こんな風に変更したら、どですか。>>330

と思ったらまたやり直し、、、
0470 ◆Nm5090363w
垢版 |
04/02/29 23:30ID:ESMdxJrR
>>468
あー、1001ストッパー書き込み時に++$lognum;が必要ですね……。
■ このスレッドは過去ログ倉庫に格納されています

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