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

このエントリーをはてなブックマークに追加
228動け動けウゴウゴ2ちゃんねる
試してみたが、他プロセスでファイルをopenしているときでも、chmodは効く。
パーミッションはopen時に判定で、print時は関係無いみたい。
となると、以下の部分で1000越えのメッセージいくつも書かれるのが納得いかないが、
もしかして別のところでchmodで書き込み可能にしてない?

if(-w $dattemp && $lognum > 999){
open(OVER, ">>$dattemp");
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OVER);
chmod(0555, $dattemp);
229動け動けウゴウゴ2ちゃんねる:04/02/28 23:07 ID:d07+DO9M
>>117 で $DATAFILE なのに
>>140 で $dattemp なのが気になったり。
230サザン ★:04/02/28 23:34 ID:???
>>229
サブルーチンなので、変数名が変わってるだけかと。
231root ★:04/02/28 23:48 ID:???
>>228
あるbbs.cgiが「1000を超えました」を書いて、
そのbbs.cgiがdatをクローズして、chmodするまでのわずかな時間に、
別のbbs.cgiが書いていると。

典型的な競合状態ってやつではないかなと。
つまり、プログラミング的には「腕の見せ所」のはず。
232動け動けウゴウゴ2ちゃんねる:04/02/28 23:59 ID:qYEToTcP
228じゃないけど

あるプロセスがchmodを行って、完了する前に別のプロセスが書き込みモードでopenしてしまう。
すると、最初のプロセスのchmodが完了せず、別のプロセスの書き込み完了まで待たされる。
その間に、さらに別のプロセスがオープンして、、

という感じで、全プロセスがファイルをcloseしない限り、chmodが完了しないのかな。
233動け動けウゴウゴ2ちゃんねる:04/02/29 00:11 ID:VMV/4FdL
でも、なんかおかしいな。

ファイルに対する実際の処理は、要求された順番に行われて欲しいのに
chmod完了待ちの間に、次のopenが成功してしまうというのはどうも・・
カーネル内部でこの辺の優先度がいじられてるのかな。

http://www.dd.iij4u.or.jp/~okuyamak/Documents/NetworkFileSystem.Tune.4.html
の真ん中ちょい下で「chmodを優先するのもアリ」と書いてあるけど
その逆に「chmodをあとまわし」にしているのかもしれない。
234root ★:04/02/29 00:30 ID:???
>>233 のリンク先にこんなのがありますね。

http://www.dd.iij4u.or.jp/~okuyamak/Documents/NetworkFileSystem.Tune.4.html より引用:

File System は、実は、順序による結果の一意決定性の保証をしなくても File System と
して動作するものを作ることができる。 たとえば、2つの process がほぼ同時に write() と
chmod() を リクエストしてきたとしよう。 一応、順序的には『write→chmod』だとする。

この場合、File System は、
「んー。なんかこの write、時間がかかりそうだな。 先に chmod やるか」
と言って、内部で順序を入れ替えてしまっても、 実は バレナイ 。 ばれないということは
(公平性には欠けるかも知れないが)、 File System の実装としては「あり」だと言うことになる。

しかし、write() と chmod() の間の時間が十分に離れていれば、 そしてこの間にこれ以外の
リクエストがいっさい来なければ、 write() と chmod() はこの順序通りに実行される。

仮に、同一のファイルに対する write() 並びに chmod() で、 しかも chmod() されると
write() が実行できなくなるような場合、 外部から観察した場合のリクエスト順序 と
内部でのリクエスト順序 が一致しなくなる。 しかも、常に一定の結果になれば良いのだが、
その保証が無い場合、journal を利用しても結果が再現できなくなる。 上の例だと、
wirte と chmod が十分時間間隔を開けて到着したので write->chmod の順で
ファイルシステムに反映した結果を client に返したのだが、 この直後に system down
を起こしたとしよう。 journal を実行する際には write と chmod は十分短い間隔で
要求されるので、 chmod->write の順で実行してしまったら、 同じ結果を得ることはできない。

235root ★:04/02/29 00:34 ID:???
つまり、>>234の例とは逆に、chmod()が(コストが高いから等の理由で)
なかなかスケジュール(実行)されないということも、当然ありうるということになりますね。
236動け動けウゴウゴ2ちゃんねる:04/02/29 00:37 ID:Wo8jG/Lx
コンピュータさんも、いやなことは後回し♪
237動け動けウゴウゴ2ちゃんねる:04/02/29 00:57 ID:YkP68lMj
chmodの後の
>$lognum++;
って、subject.txtに書き込むレス数で使われるはずで、実際subject.txtには
1000以上の数値が書き込まれているから、chmodで待つということは無いと
思うんだけど。
238197:04/02/29 01:00 ID:7x47pFWz
えと、>>197 あるいは >>212(←これは俺と別の人)の方法はどうでしょう。
これなら over 1000 判定されたら、 すでに 8) 以降にある別プロセスは蹴れないけれど
8) 以前のプロセスは蹴ることができるので、まあ 1050 位で止まると思う。

>>212 の人が言うように泥縄的アプローチではあるけれど。
239動け動けウゴウゴ2ちゃんねる:04/02/29 01:07 ID:fntZHoXb
>>238
chmodに成功しているけど反映に時間がかかると仮定すると
> ・chmod --- 成功したらロックディレクトリ消去
はマズいような。
240GlobalService ★:04/02/29 01:10 ID:???
>>238-239
>213-214にあるが
ファイルを作らないでやる方法を考える方が先らしい
241197:04/02/29 01:16 ID:7x47pFWz
>>239
じゃ、>>212 の方法で、ロックファイル(ディレクトリ)はそのまま残して
後で適当に消すってことで。

>>240
それは I/O 負荷的問題?それともポリシーの問題?
242root ★:04/02/29 01:22 ID:???
気になったんで、さらっとカーネルソースを読んでみた。

ひさしぶりなんで感覚がよみがえらないけど(ctagsの作り方をすっかり忘れていた私)、
chmod()やfchmod()すると結局、
setfmode()っていうカーネル内の関数が呼ばれて、
その中でvn_start_write(vp, &mp, V_WAIT | PCATCH)して、
それが正常終了しないとVOP_SETATTR(chmodの本体部分)に
いきつかないようになってるみたい。

vn_start_write()のコメントを読んでみると、

/*
* Preparing to start a filesystem write operation. If the operation is
* permitted, then we bump the count of operations in progress and
* proceed. If a suspend request is in progress, we wait until the
* suspension is over, and then proceed.
*/
int
vn_start_write(vp, mpp, flags)

なんてことが書いてあって、V_WAITといういやーなフラグ立ててるみたいだから、
すべてのペンディングになっているwrite()がいったん(カーネル的に)一区切りつかない限り、
VOP_SETATTR()が行われないような予感。

つまり、fchmod()にしても(>>139)だめっていうことになるすね。
というか、カーネル的にこうなっているということは、chmod()するアプローチでは絶対だめってことじゃん。

うーむ。
243GlobalService ★:04/02/29 01:27 ID:???
>>242
それって今までの処理(書込み禁止のチェック)は破綻ってこと?

だとしたら
(>212に処理順番を入れて書いた) >213を実行?
244動け動けウゴウゴ2ちゃんねる:04/02/29 01:33 ID:fKbOd8s3
>>241-242
>>91もそうなんだけど、だからこそストップ(ロック)ファイルを作成してはと書いてみた。
あらかじめ作っておいてストップするときにリネームするという方法もあるが
ディレクトリ内のファイル数が増えるのが難点だなあ。
あと、I/Oを減らしたいなら1001以降のレス数を
subject.txtに反映するのを止めるという手もある。
245239:04/02/29 01:33 ID:fntZHoXb
chmodが完了して帰ってくるまでに時間がかかるとすると
> ・chmod --- 成功したらロックディレクトリ消去
がイイような。
246root ★:04/02/29 01:37 ID:???
>>243
超多数のwriteが超同時多発的に出たりすると、vn_start_write()でブロックされて、
VOP_SETATTR()に行かなくなるような気がします。

でも、今10分ぐらい読んでみただけなんで、
このへんは、もっと中身をよく知ってる人に確認すべきな気がしますが。

個人的には、書き込みできないことの判定=ファイルモードが555、というのは
いまのままでいいから、1000超えのところだけでも、NNNNNNNNNN.dame とかいう
ファイル「も」作ることにして、
書き込めない または そのファイルがあったら 書き込み禁止とかにすべきかなとも思ったり。

今日はそろそろ、おやすみの時間。
247root ★:04/02/29 01:40 ID:???
読んでみたのはFreeBSD 5.2.1-RELEASEのカーネルなんで、
Linuxでは同じところをどうやってるか、誰かおしえていただけるとうれしいかも。

おやすみなさり。
248動け動けウゴウゴ2ちゃんねる:04/02/29 02:02 ID:VMV/4FdL
厳密に必ず1001で止めなきゃ行けないシステムならatomicなアプローチが絶対必要だけど
2chでは10や20オーバーする程度は全然平気なんだから
素直に「書き込む前にレス数を数えて、1000を超えてたら書き込まない」がよろしいかと。

つまり>>122系統のアプローチで、1001OVER書き込みではなく
レス内容の書き込みの前にレス数を判定すると。

問題は、追記モードでopenした場合に読み込みがうまく出来るかだけど、どうだったかな?
読み込みが可能なら問題なしだけど、不可能な場合、書き換えモードでopenしなくちゃいけない。
この場合、排他モードに(又はlock)しないと
レスを書き込む前に.datの末尾にseekしてから実際に書き込むまでの間に
別プロセスでの書き込みがはさまってしまうかもしれない。
すると末尾にゴミがついたり書き込みが消えると言うことが頻発してしまう。
249動け動けウゴウゴ2ちゃんねる:04/02/29 02:16 ID:VMV/4FdL
で、perl全然知らないんだけど>>122を元に

if (open(OUT, "+>>$DATAFILE")) {
@logdat = <OUT>;
if (scalar @logdat > 999) {
print OUT "$outdat\n";
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
} else {
print OUT "$outdat\n";
close(OUT);
}
}


print $outdatやclose(OUT)が複数箇所で出て非常によろしくないけど
とりあえずwindows上では動作した。
250▲ 某ソレ511:04/02/29 02:20 ID:3Ckm5k37
で、そのchmodがうまく効いてくれないのが問題じゃなかったっけ?
1000レスを大幅にオーバーしちゃうのは。
251動け動けウゴウゴ2ちゃんねる:04/02/29 02:23 ID:VMV/4FdL
だから、chmod完了待ちの間に大量のwriteリクエストが来ちゃうことが問題なの。
writeがあまり来なくなる(一段落する)と、chmodが完了するから大丈夫。

↑で動作したと書いたけど、
競合状態(複数プロセス)でどうなるかはテストしてない。
FreeBSD上でどうなるかも。
252動け動けウゴウゴ2ちゃんねる:04/02/29 02:28 ID:VMV/4FdL
あ、違う。
すみません。私がアホでした。


さらに
if (1000over) {
そのままclose();
}
を入れないと意味無いんだった。
253▲ 某ソレ511:04/02/29 02:30 ID:3Ckm5k37
>>252
はい、なるほど、それなら納得です、、
254動け動けウゴウゴ2ちゃんねる:04/02/29 02:32 ID:N/LelD+a
まとめ。
・chmodによるロックは高負荷時に効かなくなる。

対策案
まともな対処
・トランザクション処理をするDBDなどで1000ロック処理をする
分かりやすい対処
・ファイルシステムでロックファイルを使う

提案
・泥臭い処理を書くとバグるから、出来るだけCPANの.pm(Perl Module)を流用しよう
255仕事人 ★:04/02/29 02:36 ID:???
>>249

if (open(OUT, "+>>$DATAFILE")) {


ってのがあるんだ。
入れてみよう。
256仕事人 ★:04/02/29 02:43 ID:???
#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
if(scalar @logdat > 999)
{
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
257仕事人 ★:04/02/29 02:44 ID:???
>>256 版を全サーバに入れました

live5 を除く
live8/9 は root★さんのもじもじが必要
258▲ 某ソレ511:04/02/29 02:45 ID:3Ckm5k37
if(scalar @logdat > 1000)
{
close(OUT);
}

この文も入れたほうがいいかと、、
259動け動けウゴウゴ2ちゃんねる:04/02/29 02:46 ID:fntZHoXb
$lognum = @logdat を入れなくて大丈夫?
1000 OVERに広告つけたら凄そうだなぁw
261動け動けウゴウゴ2ちゃんねる:04/02/29 03:01 ID:fntZHoXb
if (scalar @logdat > 1000) {
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
262仕事人 ★:04/02/29 03:06 ID:???
こうか?

#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
$lognum = @logdat;
if($lognum > 1000)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
close(OUT);
}
if($lognum > 999)
{
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
263▲ 某ソレ511:04/02/29 03:10 ID:3Ckm5k37
こうかな?

#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
$lognum = @logdat;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
elsif($lognum > 999)
{
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}

$lognum が宣言してない変数なら、
 $lognum = @logdat;
  ↓
 my $lognum = @logdat;
でたぶんいいかと。
264仕事人 ★:04/02/29 03:10 ID:???
こうだった

#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
my $lognum = @logdat;
if($lognum > 1000)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
close(OUT);
}
if($lognum > 999)
{
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
265動け動けウゴウゴ2ちゃんねる:04/02/29 03:13 ID:fntZHoXb
たまに「このスレッドは1000を超えました〜」が書き込まれないような気はしますが、
1000を超えて書き込まれることはなくなるはずです。

……いいんだろうか。
266仕事人 ★:04/02/29 03:15 ID:???
わくわく
どきどきってことで、
267▲ 某ソレ511:04/02/29 03:15 ID:3Ckm5k37
if($lognum > 999)
 ↓
elsif($lognum > 999)

はなおしてもらわんと結局意味がないような、、
268動け動けウゴウゴ2ちゃんねる:04/02/29 03:16 ID:fntZHoXb
>>267
あー、DispErrorはexitしちゃうんで……。
269仕事人 ★:04/02/29 03:17 ID:???
さらに修正

#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
my $lognum = @logdat;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
if($lognum > 999)
{
print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
270仕事人 ★:04/02/29 03:19 ID:???
またまた修正

#open(OUT, ">>$DATAFILE");
#print OUT "$outdat\n";
#close(OUT);

if (open(OUT, "+>>$DATAFILE"))
{
print OUT "$outdat\n";
my @logdat = <OUT>;
my $lognum = @logdat;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
271▲ 某ソレ511:04/02/29 03:22 ID:3Ckm5k37
>>268
あ、DispErrorでexitするから結局elsifにしなくてもいい、ってことね、、
何か気味悪いなw
272動け動けウゴウゴ2ちゃんねる:04/02/29 03:26 ID:VMV/4FdL
print OUT "$outdat\n";
を1000over判定の後にして$lognumを++する方が。

もし書き込めなかったら狂っちゃうけど
chmod問題の原因はそっちっぽいから。
273動け動けウゴウゴ2ちゃんねる:04/02/29 03:27 ID:QcJ3LIUS
>>270
1000以上でも書き込みするような気がするけど?
274名無し募集中。。。:04/02/29 03:27 ID:Khv3Ivk3
狼で1000いったスレに
1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。
が書きこまれないです。
1000で止まってますけど
275動け動けウゴウゴ2ちゃんねる:04/02/29 03:28 ID:VMV/4FdL
あ、@logdatをhtml/*.html作成とかで使ってるのかな。
276動け動けウゴウゴ2ちゃんねる:04/02/29 03:28 ID:fntZHoXb
>>271
そうです。だから実はcloseも要らないです。
……まあたしかに行儀は悪いですが。
277仕事人 ★:04/02/29 03:28 ID:???
chmod(0555, $DATAFILE);
したファイルには書けないんだから
次のbbs.cgiは早めに判定した方がいいなぁ

512 超え判定と同時にやるのがいいのだろうか?

どやってやるの?

これはbbs.cgiのかなり前半
my $datsizeis =(stat("$DATAFILE"))[7];
unless( $datsizeis <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
278▲ 某ソレ511:04/02/29 03:30 ID:3Ckm5k37
>>272
あ、それ思った。

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
print OUT "$outdat\n";
if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}

あと、各所で1001が消えてるみたいだけど、気にしない方向で。
279仕事人 ★:04/02/29 03:35 ID:???
変更

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
print OUT "$outdat\n";
if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
280▲ 某ソレ511:04/02/29 03:41 ID:3Ckm5k37
>>277
それって
unless( -s $DATAFILE <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
でよいような気がする。。あとで$datsizeisを別に使うならまだしも。
で、ファイルのパーミッションを取得するのは
 (stat("$DATAFILE"))[2]
だそうです。
281動け動けウゴウゴ2ちゃんねる:04/02/29 03:43 ID:fntZHoXb
>>277
if (!-w $DATFILE) {
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
とか?
282▲ 某ソレ511:04/02/29 03:45 ID:3Ckm5k37
>>281
あっ、そっちのほうがスマートだね、、じゃあ、
unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
unless( -s $DATAFILE <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
こうだとよいのかな?(下はどうでもいいけど、、)
283仕事人 ★:04/02/29 03:47 ID:???
入れてこますか

unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
unless( -s $DATAFILE <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}

でも 二回実行するより stat とったほうがいいのかな?
284仕事人 ★:04/02/29 03:49 ID:???
× 入れてこますか
○ 入れてみますか

285▲ 某ソレ511:04/02/29 03:52 ID:3Ckm5k37
http://www.kaimei.org/note/book_out/eff_perl.html
ここの56項にstatよりファイルテスト演算子のほうが
効率がいいと書いてあるぽ。2回だとどうかしらんけど、、
286動け動けウゴウゴ2ちゃんねる:04/02/29 03:58 ID:fntZHoXb
unless (-w $DATAFILE) {
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
unless (-s _ <= 512000) {
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
でどうでしょ。
287動け動けウゴウゴ2ちゃんねる:04/02/29 03:58 ID:VMV/4FdL
書き込み可能かの判定はaccess()でも出来るけど
サイズの判定はstat()じゃないと駄目なので、結局stat()は呼ばれる。

と思うのでstat()1回に一票。
288動け動けウゴウゴ2ちゃんねる:04/02/29 03:58 ID:S+vNBIwB
>入れてこますか
ヒソヒソヒソ・・
289仕事人 ★:04/02/29 04:02 ID:???
つまり

if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}

これは保険で

unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}

が通常のルートですなぁ
メッセージ変えておこうかな、
290動け動けウゴウゴ2ちゃんねる:04/02/29 04:03 ID:fntZHoXb
>>286だとstatは1回で済むです。
291▲ 某ソレ511:04/02/29 04:03 ID:3Ckm5k37
>>286
だと2回目の判定で前回のデータから読み込むんだね、、
statじゃなくてもそれが一番よさげ。
292仕事人 ★:04/02/29 04:04 ID:???
>>290-291
( ・∀・)つ〃∩ヘェーヘェーヘェー


if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
293動け動けウゴウゴ2ちゃんねる:04/02/29 04:09 ID:7x47pFWz
『1001』が書き込まれてないスレって、パーミションが
落ちてないような気がするけど大丈夫かな?

圧縮の時にパーミション見てたりしていない?
294▲ 某ソレ511:04/02/29 04:16 ID:3Ckm5k37
>>293
ニュー速の1001がいないスレにテスト書き込みしてみたけど、
「ERROR:このスレッドには書き込めません。」でした。
パーミションはちゃんと落ちてる模様。
295動け動けウゴウゴ2ちゃんねる:04/02/29 04:25 ID:QcJ3LIUS
>>294
パーミッションじゃなく1000overではじかれてるんじゃない?
1001の書き込みとchmodはセットでしょ?
大丈夫なの?
296動け動けウゴウゴ2ちゃんねる:04/02/29 04:31 ID:VMV/4FdL
>>292のメッセージ入りバージョンなら、外から判別できるみたいよ。
297動け動けウゴウゴ2ちゃんねる:04/02/29 04:46 ID:fntZHoXb
なにやら1001ストッパーがかかっているスレッドはsubject.txtに記録されているレス数が微妙に少ないような。
print OUT "1001<><>Over 1000 Thread<>このスレッド〜
のところに $lognum++ が必要な気がする……。
298▲ 某ソレ511:04/02/29 04:46 ID:3Ckm5k37
>>295
分かりづらくてすまん。>>296の言うとおり、
>>292のメッセージが入っているという前提でした。。
299▲ 某ソレ511:04/02/29 04:48 ID:3Ckm5k37
>>297
狼をしばらく見てたけど、どうやら
subject.txtに1001と書いてある→1001ストッパーがいない
subject.txtに1002と書いてある→1001ストッパーがいて、普通通り止まっている
になってるみたいです。
300動け動けウゴウゴ2ちゃんねる:04/02/29 04:51 ID:fntZHoXb
>>299
あ、多くなるんですか……。なんだろう。
301動け動けウゴウゴ2ちゃんねる:04/02/29 09:20 ID:tRe0V1Y9
1001がないスレをJaneで取得するとDATサイズエラー警告が出る。
302動け動けウゴウゴ2ちゃんねる:04/02/29 09:49 ID:5EYN+Lkh
試しに狼の1000超えスレッド15本を見ると、
 subject.txtは1002、datは1001、1001ストッパーあり:8スレッド
 subject.txtは1001、datは1001、1001ストッパーあり:3スレッド
 subject.txtは1001、datは1000、1001ストッパーなし:4スレッド
でした。subject.txtの勝率2割。

Live2chだと実害はありませんが、
「新着あり」→「レス取得」→「新着あり」の永久コンボです。
そろそろ雑質スレや専用ブラウザスレが騒がしくなってきました。
303動け動けウゴウゴ2ちゃんねる:04/02/29 10:21 ID:TNHbMcY8
>>301
どっちかと言うとJaneの不具合だから、こっち。
2ちゃんねる用ブラウザ「OpenJane」Part74
http://pc2.2ch.net/test/read.cgi/software/1075644934/

漏れもJane使いで同じ症状が出てるんだけどな。
304root ★:04/02/29 11:17 ID:???
>>257
live8、もじもじ。
305root ★:04/02/29 11:18 ID:???
live9も、もじもじ。
306root ★:04/02/29 11:30 ID:???
ここのやりとりを起き抜けでぼおっと読みました。

作戦の趣旨は理解できたです。
あとは、超高負荷になった時にどうなるかということで。
307GlobalService ★:04/02/29 11:42 ID:???
>306
live8に入れないと分からない

1.( 1001 < $lognum) && ($lognum < 2000)の範囲内
2.datファイルが壊れる
3.鯖が落ちる
のどれか
308root ★:04/02/29 11:47 ID:???
もう仕事人さんがlive8に入れてありました。(Perl版)
さきほど私がperlccにかけて、バイナリ版にしました。

入れてあるから、1000までしかいかないんではないかと。

■2/29■ハロー!モーニング。スペシャル■Part3■
http://live8.2ch.net/test/read.cgi/dancesite/1078018021/
309動け動けウゴウゴ2ちゃんねる:04/02/29 13:11 ID:miDcWYdc
924もパーミッションで止めるようにできるね(もうやってるのかな
310動け動けウゴウゴ2ちゃんねる:04/02/29 13:56 ID:aErj63/K
そもそも高速処理が要求されるのに
高コストなライトパーミッションクローズでとめられるのかというと・・・

キャッシュがされないDNSのようなしくみがあればいいんですが。
311動け動けウゴウゴ2ちゃんねる:04/02/29 14:08 ID:aErj63/K
>>310
訂正。

>>191の案1で1000を越えていたときのみキャッシュするようにする。

たとえばこのスレを例にとり、
1076666901.oparete..qb3.tts.2ch.netなるホストの逆引きで
1000を越えているいないでキャッシュの許可権限を動的に変換できないかということ。
312動け動けウゴウゴ2ちゃんねる:04/02/29 14:16 ID:KpHZ/ePg
まずいなぁ
2chブラウザ大幅見直しか…
313仕事人 ★:04/02/29 14:22 ID:???
>>279 のどこが悪いんだ?

ここじゃなくて他のところが悪いの?
314サザン ★:04/02/29 14:28 ID:???
状況が飲み込めてないおいら。
過去ログ読もう。
315root ★:04/02/29 14:29 ID:???
>>313
>>279 だと、
確実に書き込みは止まると思うけど、
高負荷だと「このスレッドは1000を超えました」を誰も通らないことになると思う。
…つか、実際になってるか。
316サザン ★:04/02/29 14:31 ID:???
>>313
>>279
多分、

if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}

の部分を誰も通ってないのではないかと。。
317サザン ★:04/02/29 14:31 ID:???
かぶった。。。
318root ★:04/02/29 14:33 ID:???
今、live8/livecxのチェックを番組を未ながらやってるです。
この内容じゃ、速いの当たり前か。
319root ★:04/02/29 14:33 ID:???
未ながら => 見ながら
320動け動けウゴウゴ2ちゃんねる:04/02/29 14:34 ID:JRuLY0x3
>>292は入ってるんですよね?
321動け動けウゴウゴ2ちゃんねる:04/02/29 14:34 ID:miDcWYdc
subject.txtに書かれるレス数と実際のレス数が違うのなんでだろ〜
322未承諾広告※ ◆aiY4htt2.2 :04/02/29 14:35 ID:47xPabMI
キャップ(★)とは被るものですから。
323サザン ★:04/02/29 14:36 ID:???
やっぱり根本的に作り直さないとダメなのかなぁ、、
324仕事人 ★:04/02/29 14:36 ID:???
>>320
はいってます。

もう一回掲示するネ
325仕事人 ★:04/02/29 14:37 ID:???
(1) bbs.cgi の序盤

unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
unless( -s $DATAFILE <= 512000){
DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
}
326仕事人 ★:04/02/29 14:38 ID:???
(2) bbs.cgi の中盤の最後 (datへの追記)

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}


327仕事人 ★:04/02/29 14:39 ID:???
(3) bbs.cgi の終盤の始め

#==================================================
# ファイル操作(subject.txt & subback.html)
#==================================================

{
#サブジェクトパスを作成

my $rnd = int(rand(99999));

my $subject = $PATH . "subject.txt";
my $subtemp = $PATH . $rnd . $FORM{'time'} . ".tmp";
my $keyfile = $FORM{'key'} . ".dat";
use vars qw($FILENUM);
use vars qw($SUBLINE);
use vars qw(@newsub);

#サブジェクトファイルを読み込む
unless(-e "$subject"){
makesub();
}
open(SUBR,"<$subject");#SUBJECTを開く
my @SUBJECTLIST = <SUBR>;#内容を全て読み込む
close(SUBR);#閉じる
$FILENUM = @SUBJECTLIST;

MakeWorkFile($FORM{'key'});

if($FORM{'subject'} ne ""){
#subjectがあれば新規スレッド
my $subtm = "$keyfile<>$FORM{'subject'} (1)\n";
@newsub = ($subtm, @SUBJECTLIST);
++$FILENUM;
}else{
my (@tempsub, $transub, $frontsub, $rearsub);
if($FORM{'mail'} =~ /sage/){
$transub = join('<<>>', @SUBJECTLIST);#一本につなげる
($frontsub, $rearsub) = split(/$keyfile<>/, $transub);#keyでぶったぎる
@tempsub = split(/<<>>/, $rearsub);#後半ぶつ切り
$transub = shift(@tempsub);#タイトルを取り出す
$transub = $keyfile . "<>" . $SUBLINE;#タイトル入れ替え
@newsub = (split(/<<>>/, $frontsub), $transub, @tempsub);
}else{
$transub = $keyfile . "<>" . $SUBLINE;
@newsub = ($transub, grep(!/^$FORM{'key'}/, @SUBJECTLIST));
}
}

if(@newsub){
#SUBJECTに書き込む
open(SUBT, ">$subtemp");
#flock(SUBT, 2);
foreach(@newsub){
print SUBT $_;
}
#flock(SUBT,8);
close(SUBT);
my $resuc = 0;
until($resuc){ $resuc = rename($subtemp, $subject); }
}else{
@newsub = @SUBJECTLIST;
}
}

328仕事人 ★:04/02/29 14:40 ID:???
関連するサブルーチンに

makesub();
MakeWorkFile($FORM{'key'});

この二つがある

329仕事人 ★:04/02/29 14:41 ID:???
#==================================================
# subject.txtの補完
#==================================================

sub makesub{
my $bbs = $FORM{'bbs'};
my $path = "../"."$bbs"; #$where{$bbs};
my $datpath = $path."/dat";

open(DIR, "ls $datpath/|") || print HTM " cant' ls.";
my @dir = <DIR>;
close(DIR);

my %time;
my @pagefile;

foreach(@dir){
chop();
my $mtime;
my $pagemax;
my $mt = "$mtime"."$_";
($mtime) = (stat("$datpath/$_"))[10];
$time{"$mt"} = $_;
++$pagemax;
}

my @mtime = keys(%time);
my @sorting = sort by_number @mtime;
my $filenum;
foreach(@sorting){
push(@pagefile,$time{"$_"});
#print $time{"$_"};
++$filenum;
}

#@pagefile = reverse(@pagefile);
my $num;
my $subject;

while($filenum>=$num){
my $showpage = @pagefile[$num];
if($showpage eq ""){
}
open(IN, "$datpath/$showpage")||die "";
my $resnum = 1;
my $rr = 0;
while(<IN>){
$resnum++;
if($rr == 0){
$_ =~ s/\n//gi;
$_ =~ s/\r//gi;

my ($name,$mail,$time,$message,$subject);
($name,$mail,$time,$message,$subject) = split(/,/,$_);
$rr = 1;
}
}
close(IN);
open(OUT,">$path/subject.txt");
print OUT $showpage .",";
print OUT "$subject($resnum)\n";
++$num;
close(OUT);
}
}

330仕事人 ★:04/02/29 14:41 ID:???
#==================================================
# ファイル操作(HTML作成用作業ファイル更新)
#==================================================

#HTML用DATを作成
#MakeWorkFile(KEY-NUMBER)
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(-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);
}
}

#1つ目の要素を読み込む
$firstlog = $logdat[0];
#改行カット
chomp($firstlog);

#1つ目の要素を加工する
($name,$mail,$time,$message,$subject) = split(/<>/,$firstlog);

$SUBLINE = $subject . " (" . $lognum . ")\n";

open(SHTM,">$workfile");#ログテンポラリを開く
#flock(SHTM,2);

#サブジェクトテーブルを吐き出す(ここは必ず1行にまとめること(処理効率))
#-----------------------------------------------------------------------
print SHTM <<EOF;
<TABLE border=1 cellspacing=7 cellpadding=3 width=95% bgcolor="$SETTING{"BBS_THREAD_COLOR"}" align=center><TR><TD><DL><a name="\$ANCOR"></a><DIV ALIGN="right"><a href ="#menu">■</a><a href="#\$FRONT">▲</a><a href="#\$NEXT">▼</a></DIV><B>【\$ANCOR:$lognum】<FONT size=5 color="$SETTING{'BBS_SUBJECT_COLOR'}">$subject</FONT></B>
EOF
#-----------------------------------------------------------------------


#1つ目のメールへのリンクを作成
if($ENV{'SERVER_NAME'} =~ /bbspink\.com/i)
{#if(bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/pinktower\.com\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;

}
} else {#if(!bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/ime\.st\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;

}
}###

if($mail ne ""){
$mailto = "<a href=\"mailto:$mail \"><b>$name </b></a>";
}else{
$mailto = "<font color=$SETTING{'BBS_NAME_COLOR'}><b>$name </b></font>";
}

#1つ目の要素を吐き出す
print SHTM "<dt>1 名前:$mailto $time<dd>$message <br><br><br>";

#ログ数から、表示コンテンツをチェック
if($lognum > $SETTING{"BBS_CONTENTS_NUMBER"}){
#ケツの要素を0〜9番までコンテンツに格納
@content[0..$SETTING{"BBS_CONTENTS_NUMBER"}-1] = @logdat[@logdat-$SETTING{"BBS_CONTENTS_NUMBER"}..@logdat-1];
$topnum=@logdat-($SETTING{"BBS_CONTENTS_NUMBER"}-1);
}else{
#アタマの要素を1〜10番までコンテンツに格納
@content[0..($SETTING{"BBS_CONTENTS_NUMBER"}-1)] = @logdat[1..$SETTING{"BBS_CONTENTS_NUMBER"}];
$topnum=2;
}

foreach(@content){
chomp($_);#改行をカット

#要素を加工する
($name,$mail,$time,$message,$subject) = split(/<>/,$_);

unless($_){
$topnum++;
next;
}

#要素のメールへのリンクを作成
if($ENV{'SERVER_NAME'} =~ /bbspink\.com/i)
{#if(bbspink)
#if(bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/pinktower\.com\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}
}else {#if(!bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/ime\.st\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}
}
##
if($mail ne ""){
$mailto = "<a href=\"mailto:$mail \"><b>$name </b></a>";
}else{
$mailto = "<font color=$SETTING{'BBS_NAME_COLOR'}><b>$name </b></font>";
}

print SHTM "<dt>$topnum 名前:$mailto :$time<dd>";

my @messx = split(/<br>/,$message);#メッセージを行でカット
my $messy = @messx;#行数を計算
if($messy > $SETTING{"BBS_LINE_NUMBER"}){
my $messz = join('<br>',@messx[0 .. $SETTING{'BBS_LINE_NUMBER'}-1]);
print SHTM "$messz <br>";
print SHTM "<font color=\"$SETTING{'BBS_NAME_COLOR'}\">(省略されました・・全てを読むには<a href=\"../test/read.cgi/$FORM{'bbs'}/$key/$topnum\" target=\"_blank\">ここ</a>を押してください)</font><br>";
}else{
my $messz = join('<br>',@messx[0 .. $messy-1]);
print SHTM "$messz <br>";
}

$topnum++;
print SHTM "<br>\n";
}

#-----------------------------------------------------------------------

#flock(SHTM,8);
close(SHTM);

#パーミッション調整
umask(0);
chmod(0666,$workfile);
}

331未承諾広告※ ◆aiY4htt2.2 :04/02/29 14:43 ID:47xPabMI
>>325
-w $DATAFILE or ( -s $DATAFILE <= 512 * 1024) or DispError("ERROR!","ERROR:このスレッドには書き込めません。");
エラーの単純化っでどうかしら?理由はどうあれ書き込めないのですから(^-^)
332動け動けウゴウゴ2ちゃんねる:04/02/29 14:44 ID:JRuLY0x3
chmodはされているのにOver1000がprintされていない、、、?
333サザン ★:04/02/29 14:47 ID:???
そういえば、gethostbyaddr を二回やってるのはどうなんだろう。。。
334未承諾広告※ ◆aiY4htt2.2 :04/02/29 14:54 ID:47xPabMI
>>331
追記および訂正。
our $Log_line = 1; # グローバル扱いで。以後レス数はこれを参照するとか。
if (open(OUT, "+>>$DATAFILE")) { $Log_line = join '', <OUT> =~ tr/\n/\n/ }
-w $DATAFILE or ( -s $DATAFILE <= 512 * 1024) or ($Log_line > 1000) or
 DispError("ERROR!","ERROR:このスレッドには書き込めません。");
335++$lognum;の位置が悪い?:04/02/29 14:55 ID:miDcWYdc
if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
if($lognum > 1000)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
++$lognum;
if($lognum > 1000)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
}
}
336仕事人 ★:04/02/29 14:58 ID:???
>>335
そうなのか? そうなのか?
337未承諾広告※ ◆aiY4htt2.2 :04/02/29 15:01 ID:47xPabMI
>>334
条件が無茶苦茶ですね。ごめんなさい。
(-w $DATAFILE and ( -s $DATAFILE <= 512 * 1024) and ($Log_line < 1001)) or
 DispError("ERROR!","ERROR:このスレッドには書き込めません。");
338▲ 某ソレ511:04/02/29 15:03 ID:3Ckm5k37
>>335
むしろそうするくらいなら、
++$lognum; を削除
だけで済むような。
339動け動けウゴウゴ2ちゃんねる:04/02/29 15:04 ID:PXz8TrzZ
340動け動けウゴウゴ2ちゃんねる:04/02/29 15:05 ID:genUmBmg
質問。subject.txtに記録されるレス数は >>326 の $lognum ですか?
341▲ 某ソレ511:04/02/29 15:06 ID:3Ckm5k37
>>339
うん。今そのことについて議論してるところかと。
342動け動けウゴウゴ2ちゃんねる:04/02/29 15:09 ID:miDcWYdc
>340
漏れも多分そうだと思って一応++$lognum;は残しておいてもた
343動け動けウゴウゴ2ちゃんねる:04/02/29 15:10 ID:miDcWYdc
>342
もた→みた
ヽ(`Д´)ノウワァァン
344仕事人 ★:04/02/29 15:10 ID:???
if($lognum > 1010)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}

にしてみた。
345仕事人 ★:04/02/29 15:11 ID:???
>>340
どうなんですかねぇ
346サザン ★:04/02/29 15:13 ID:???
というか、datの書き込みのあとには、

#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);

がきてますよー。
347動け動けウゴウゴ2ちゃんねる:04/02/29 15:13 ID:miDcWYdc
if($lognum > 1000)
{
++$lognum; #←これもいるかも
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
348root ★:04/02/29 15:13 ID:???
>>344
いいアプローチだと思われ。
349root ★:04/02/29 15:14 ID:???
ただ、>>344 みたいなアプローチがどのぐらい効果あるかだけど、、、。
それで、1001ストッパーが書かれるような気は、あんまりしないかも。

ちょっとお出かけ。
350仕事人 ★:04/02/29 15:15 ID:???
#MakeWorkFile(KEY-NUMBER)
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(-w $dattemp && $lognum > 999){
#open(OVER, ">>$dattemp");
#print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
#close(OVER);
#chmod(0555, $dattemp);
#$lognum++;   ← コメントにした
351動け動けウゴウゴ2ちゃんねる:04/02/29 15:15 ID:YkP68lMj
>>330
#ログのカキコ数を取得
から
#1つ目の要素を読み込む
の前までがいらない。
この中の$lognum++;が最終的にsebject.txtに書かれているので
実際より+1された数が入ってしまう。
352仕事人 ★:04/02/29 15:16 ID:???
>>346
おおっ
353仕事人 ★:04/02/29 15:18 ID:???
変更

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum > 1010)
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
if($lognum > 999)
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
else
{
close(OUT);
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}
}
354動け動けウゴウゴ2ちゃんねる:04/02/29 15:22 ID:YkP68lMj
>chmod(0666, $DATAFILE);
レス数が1000を超える原因と思われ
355GlobalService ★:04/02/29 15:23 ID:???
解決した?

最終的に subject <= 実際のカウント になればいいような
356動け動けウゴウゴ2ちゃんねる:04/02/29 15:23 ID:genUmBmg
datの読み込みを2回やってるんですね〜……。
レスの書き込みとレス数の取得を同時にやる(>>353 の処理を >>350 に持ってくる)のがいいかも。

……大手術(汗)。
357サザン ★:04/02/29 15:24 ID:???
>>354
おいらもそう思ったですよ。

chmod 0555 しても、追っかけてきてるプロセスが chmod 0666 しちゃって、
そのプロセスが、chmod 0555 しても。。。

chmod 0666 を消したら解決だったりして。
358動け動けウゴウゴ2ちゃんねる:04/02/29 15:28 ID:YkP68lMj
>>357
chmodが効かないって変だと思ったんだよね。
359root ★:04/02/29 15:39 ID:???
でかける前に見た。
こりゃ、>>354がビンゴな気が。
でなきゃ、いくらひどいじょーきょーでも、4000とかいく原因とは考えにくい。

しばらくオフライン。たまーにPHSでチェックするかも。
360サザン ★:04/02/29 15:40 ID:???
というわけで、live8,9に

chmod(0666, $DATAFILE);

を消したやつを入れてみてくださいですー。
361 ◆qb.x27/m96 :04/02/29 17:18 ID:W0afuNnL
>>353
処理の順番が。。
これでどですか。


if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
if($lognum = 1000) #正常処理
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
}
if($lognum > 1000) #非常時処理
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
chmod(0555, $DATAFILE);
}
else if($lognum < 1000) #1000未満時処理
{
close(OUT);
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}
++$lognum;
}
362 ◆qb.x27/m96 :04/02/29 17:53 ID:W0afuNnL
訂正。。


if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum = 1000) #正常処理
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
}
if($lognum > 1000) #非常時処理
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
chmod(0555, $DATAFILE);
}
else if($lognum < 1000) #1000未満時処理
{
close(OUT);
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}
}
363動け動けウゴウゴ2ちゃんねる:04/02/29 18:21 ID:VrFyjLpJ
>>351
テレビ朝日実況板より
スクープスペシャルその1 (1001)
http://live8.2ch.net/test/read.cgi/liveanb/1078030448/
1000 名前:名無しステーション 投稿日:04/02/29 14:52 ID:gFLAwWAx
(1001無し)

スクープスペシャル 警察の裏金疑惑第2弾 その2 (1000)
http://live8.2ch.net/test/read.cgi/liveanb/1078030554/
1000 名前:名無しステーション 投稿日:04/02/29 15:20 ID:LyiRwuOt
(1001無し)


この間に加えた修正によって、subject.txtに書かれるレス数と
実際のレス数が一致するようになりました。ありがとう!
364 ◆qb.x27/m96 :04/02/29 18:50 ID:W0afuNnL
#ERROR!
#ERROR:このスレッドには書けません!

#修正ここまで。
# "ERROR:このスレッドには書き込めません。緊急緊急緊急!!" が出てこないけど今ソースはどうなってるのだろう。。


if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
++$lognum;
if($lognum = 1000) #正常処理
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
chmod(0555, $DATAFILE);
}
if($lognum > 1000) #非常時処理
{
close(OUT);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
print OUT "$outdat\n";
}
else if($lognum < 1000) #1000未満時処理
{
close(OUT);
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}
}
365動け動けウゴウゴ2ちゃんねる:04/02/29 18:58 ID:genUmBmg
>>364
たぶん >>353 かと。
366動け動けウゴウゴ2ちゃんねる:04/02/29 19:05 ID:genUmBmg
>>364
それから、1001ストッパーを書き込む「前」に$outdatを出力しないとだめです(でないと書き込みが吸い込まれる)。
367仕事人 ★:04/02/29 19:27 ID:???
なぜ 1,001 が書き込まれないんだ?
368動け動けウゴウゴ2ちゃんねる:04/02/29 19:33 ID:genUmBmg
1001ストッパーが書き込まれないのは
・プロセスAが >>353 で1000レス目を書き込む
・プロセスBが >>330 で(1000レス以上なので)chmodする
・プロセスAが1001ストッパーを書き込もうとするもEPERM
と予想してみる。

ということで、>>353
if ($lognum > 1010) {
close(OUT);
chmod(0555, $DATFILE);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
にして、>>330 の chmod(0555, $dattemp); を削除する、というのはどうでしょ。
369動け動けウゴウゴ2ちゃんねる:04/02/29 19:43 ID:genUmBmg
……って、writeはEPERMなんか返さないか……。
370仕事人 ★:04/02/29 19:48 ID:???
これ全部いらないのか?

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);
}
}
371仕事人 ★:04/02/29 19:49 ID:???
いったい何をしているルーチンなんだろぅ
372動け動けウゴウゴ2ちゃんねる:04/02/29 20:11 ID:aErj63/K
ファイルロックの名残?
総帥に事情聴取してからにしてください。
こないだのiスクリプト消滅騒ぎのような事態は避けないと。
373動け動けウゴウゴ2ちゃんねる:04/02/29 20:12 ID:2mqLuO2T
あらためて
・複数のプロセスが999レス目のつもりで書き込む→1000オーバー(ただしストッパーは書かれない)
・1000オーバーなので >>330 でchmod
と予想してみる。

ってことで、>>330 の1001ストッパー書き込みも復活すれば……。
……泥縄だなぁ。
374動け動けウゴウゴ2ちゃんねる:04/02/29 20:17 ID:fKbOd8s3
線を一気に飛び越えちゃうわけか。
375 ◆qb.x27/m96 :04/02/29 20:17 ID:W0afuNnL
ええとこれとまったく同じメッセージが書いてある部分のソースがないのですがどの部分でしょうか
 ↓
ERROR:このスレッドには書けません!


あと $outdat っての値が代入されている部分のソースもないし。。
376仕事人 ★:04/02/29 20:19 ID:???
>>375 >>325 かと
377 ◆qb.x27/m96 :04/02/29 20:24 ID:W0afuNnL
ええとこういう風になっているはずなのですけど。

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


----
ERROR!
ERROR:このスレッドには書けません!
378サザン ★:04/02/29 20:26 ID:???
>>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を超えているので書けません!");
}
379 ◆qb.x27/m96 :04/02/29 20:26 ID:W0afuNnL
あ間違えたました、、こうです

DispError("ERROR!","ERROR:このスレッドには書けません!");
380動け動けウゴウゴ2ちゃんねる:04/02/29 20:27 ID:iItDTd+D
>>378
なんかもうぐだぐだだなw
381サザン ★:04/02/29 20:29 ID:???
>>370
chmod 0555 が失敗したときか、
chmod 0555 の後に書き込めるようになっちゃったときの処理ですかねー、
あんまり意味がないような気もする、、
382動け動けウゴウゴ2ちゃんねる:04/02/29 20:37 ID:iItDTd+D
>>378
別にどうでもいいんだけど
512k超えの処理ってunlessでやる意味あるんだろうか
383動け動けウゴウゴ2ちゃんねる:04/02/29 20:51 ID:ESMdxJrR
>>370 でunlinkしている $DATPATH . $key . ".tmp" というファイルはどこで作ってるんでしょ?
384仕事人 ★:04/02/29 20:52 ID:???
謎がなぞ呼ぶ殺人事件〜
385動け動けウゴウゴ2ちゃんねる:04/02/29 20:54 ID:LpYYZbpn
こんなに謎だらけでもなんとなく動いているところがすごい・・・(´Д`;)
386仕事人 ★:04/02/29 20:56 ID:???
>>383
作っていないような気がする。。。
387動け動けウゴウゴ2ちゃんねる:04/02/29 20:57 ID:miDcWYdc
>386
(;゚∀゚)<…
388仕事人 ★:04/02/29 20:58 ID:???
ようし、外してみよう。


#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);
#}
#}
389動け動けウゴウゴ2ちゃんねる:04/02/29 20:59 ID:ESMdxJrR
どきどき……。
391動け動けウゴウゴ2ちゃんねる:04/02/29 21:01 ID:iItDTd+D
一回整理しましょうよホント>bbs.cgi
392仕事人 ★:04/02/29 21:02 ID:???
>>391
何人の人がそう思いチャレンジしてきたことか・・・
いまだ勝者は一人としていない、暗黒の世界から生還したものはいない。
393動け動けウゴウゴ2ちゃんねる:04/02/29 21:03 ID:ESMdxJrR
>>390
たぶん
/dat/key.dat に書き込んで
/dat/key.dat を /dat/key にコピーして ←たぶん無駄
/dat/key を /dat/key.dat にリネームして ←たぶん無駄
/dat/key.dat を書込み禁止にして
/dat/key.tmp をあぼーんしている ←たぶん無駄
かと……。
394動け動けウゴウゴ2ちゃんねる:04/02/29 21:08 ID:iItDTd+D
>>392
まぁチャレンジできる人が限られてるし…。
ここの暇人たち(←おい)なら軽く片付けちまいそうな気も…w
395動け動けウゴウゴ2ちゃんねる:04/02/29 21:09 ID:aErj63/K
>>392
というか、ソースが(NDAでもいいから)完全公開されれば(ry
>>392
チャレンジできるの数人だろっw
397動け動けウゴウゴ2ちゃんねる:04/02/29 21:13 ID:aErj63/K
こんなん見つけた。

bbs.cgi開発【WebProg板】
http://pc2.2ch.net/test/read.cgi/php/1019171453/l50
398Vsw ◆OoVswP.T/I :04/02/29 21:20 ID:qAGI7Tit
芸スポなんですけどいいですか?
【サッカー】日本代表選手7人が合宿中に規則違反で飲酒★2
http://news6.2ch.net/test/read.cgi/mnewsplus/1077996750/

1001ストッパーが壊れてるのか
ストップしないんですか。
399動け動けウゴウゴ2ちゃんねる:04/02/29 21:21 ID:8JXkPfOV
小規模MMOも止まってませんー
http://game3.2ch.net/test/read.cgi/mmominor/1077956337/
400仕事人 ★:04/02/29 21:21 ID:???
うーむ

別の土俵で戦っていたのか。。。
>>400
で、どうするんです?
と聞いてみるテスト。
402Vsw ◆OoVswP.T/I :04/02/29 21:25 ID:qAGI7Tit
各板、片っ端から1000overしてるようです。
403動け動けウゴウゴ2ちゃんねる:04/02/29 21:25 ID:7dJsHuv7
発掘あるある大辞典 テーマは「携帯電話」その1
http://live8.2ch.net/test/read.cgi/livecx/1078053437/

こっちもすごい
404仕事人 ★:04/02/29 21:25 ID:???
これが期待通りの動作をしていないってことっすね

if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
405動け動けウゴウゴ2ちゃんねる:04/02/29 21:25 ID:BbcWiVlz
あわわ。。
406動け動けウゴウゴ2ちゃんねる:04/02/29 21:26 ID:ESMdxJrR
うわー……。
407仕事人 ★:04/02/29 21:26 ID:???
>>338 以前まで rewind 中。。。
408動け動けウゴウゴ2ちゃんねる:04/02/29 21:26 ID:kaI5hUlb
テストとしてだけど1000を超えたらあらゆる変数を出力しまくってみては
409動け動けウゴウゴ2ちゃんねる:04/02/29 21:26 ID:JvRnpXfA
1001復活きぼんぬ
410 ◆LBZUBURIYM :04/02/29 21:29 ID:jysovvLt
1010のやつを生かしておいて,変数を色々出力して検証してみてはどうでしょ?
411くるたん ◆XGE80X.EXE :04/02/29 21:30 ID:uI3lR/CL
(ノ´∀`*)
412動け動けウゴウゴ2ちゃんねる:04/02/29 21:30 ID:CtJQij/n
うはwwwwwwwwwww
413動け動けウゴウゴ2ちゃんねる:04/02/29 21:30 ID:bbjCtUwx
414動け動けウゴウゴ2ちゃんねる:04/02/29 21:30 ID:iItDTd+D
>>398
>>399
>>403
チッ。記念カキコしに行ったのにどこもかけなかった!
415Vsw ◆OoVswP.T/I :04/02/29 21:31 ID:qAGI7Tit
現状>>403が一番凄い。
3000突破してる・・・

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

どぞ↓
417動け動けウゴウゴ2ちゃんねる:04/02/29 21:32 ID:f8ACAEWa
ストッパーが外れちゃったのか…
418動け動けウゴウゴ2ちゃんねる:04/02/29 21:32 ID:EeoZCf+m
どこも泊まって書き込めん買ったな
419動け動けウゴウゴ2ちゃんねる:04/02/29 21:33 ID:7dJsHuv7
>>403は、他の人が書きこめたてた時もオレはユーザー情報が消失してますとか言われて書き込めなかった
420動け動けウゴウゴ2ちゃんねる:04/02/29 21:33 ID:Oky00rr1
いっそのこと1001ストッパー廃止でいいじゃん。
うーん。。。とりあえず各種変数を出力するようにしてみたら?
422動け動けウゴウゴ2ちゃんねる:04/02/29 21:38 ID:CtJQij/n
こんなところに誤爆していたとは・・・スマソ
423動け動けウゴウゴ2ちゃんねる:04/02/29 21:42 ID:pDxaRHJF
>>392
オープンソースに汁
424 ◆Nm5090363w :04/02/29 21:46 ID:ESMdxJrR
>>416
>>404を確かめるために
試験的に >>353 の if($lognum > 1010) を if($lognum > 300) とかにして
300を超えたスレッドに書き込んでみて
「緊急緊急緊急!!」が出るかどうかを見てみるのはどうでしょか。
>>424
それは危険過ぎるとおもうなぁ>300にする
426 ◆Nm5090363w :04/02/29 21:49 ID:ESMdxJrR
>>425
いや、いきなり全鯖に配るわけじゃなくて、(金) でテストするだけでも、と……。
qbのbbs.cgi更新すると一気に全鯖いくんじゃなかったっけ?(わからん
428動け動けウゴウゴ2ちゃんねる:04/02/29 21:50 ID:Oky00rr1
>>426
(金)ではやり辛いでしょ。
いっそのことN速で実験しましょ。
429動け動けウゴウゴ2ちゃんねる:04/02/29 21:50 ID:1iQ36Iim
金で1000取りやるですか。協力はしますが、、、
つーか老体にムチ打つなんておまいら最強だな
431動け動けウゴウゴ2ちゃんねる:04/02/29 21:52 ID:kaI5hUlb
いろんなとこにフラグ立てまくって出力させてみてほしいです
どこが実行できていて、どこができてないのかよく分かんない
432 ◆Nm5090363w :04/02/29 21:53 ID:ESMdxJrR
>>404のレス数チェックが効いてるかどうかは、このスレに1回書き込むだけで判明するかな、と。
http://qb.2ch.net/test/read.cgi/operate2/1068621844/
このスレがいま350レスなので……。
433仕事人 ★:04/02/29 22:19 ID:???
ん?

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

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

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

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

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

じゃないすかね
437動け動けウゴウゴ2ちゃんねる:04/02/29 22:29 ID:iItDTd+D
>>436
IDがチゴイ
438 ◆Nm5090363w :04/02/29 22:30 ID:ESMdxJrR
>>436
うちのcygwinだと"+>>"でopenした時点でファイル先頭にseekされてました。
あと、追記モードじゃないと書き込みがぶつかったときにヤバいです。
439動け動けウゴウゴ2ちゃんねる:04/02/29 22:33 ID:TMkYPOIR
なんか…ニュー速+も1001ストッパー壊れてるのね。
なにがなんだか…
440 ◆qb.x27/m96 :04/02/29 22:34 ID:W0afuNnL
>>433

ええと>>330に手を加えていたものが>>350
その後>>353でテストして>>330あたりに戻ったということなのかな。。
どのソースを元にやればいいのか、、
ちょっとゆっくりやってほしい、、
441動け動けウゴウゴ2ちゃんねる:04/02/29 22:39 ID:fKbOd8s3
>>435
ソレダ!!
442動け動けウゴウゴ2ちゃんねる:04/02/29 22:45 ID:fKbOd8s3
今試したら、Windows(ActivePerl)でもsysopen使ったら先頭だった。
443動け動けウゴウゴ2ちゃんねる:04/02/29 22:45 ID:VMV/4FdL
>>249だけど、>>438と同様、
cygwin+perl5.8.2で、読み込み時は先頭から
同じくlinux(redhat8かな)+perl5.8.0でも。
444動け動けウゴウゴ2ちゃんねる:04/02/29 22:54 ID:fKbOd8s3
と思ったら違ってたぽい。
445動け動けウゴウゴ2ちゃんねる:04/02/29 22:55 ID:VMV/4FdL
思ったんだけど
bbs.cgiを置き換えちゃうと不具合が出たときに面倒だし
変数を表示しようとしてもなかなか難しい。

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

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

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);
}
448仕事人 ★:04/02/29 23:01 ID:???
これを ニュー速に入れてみよう
449 ◆Nm5090363w :04/02/29 23:02 ID:ESMdxJrR
はらはら……。
450ニュー速住人:04/02/29 23:03 ID:fiJ+rQB5
ぉぃ(汗
451動け動けウゴウゴ2ちゃんねる:04/02/29 23:05 ID:BbcWiVlz
土器土器。
452仕事人 ★:04/02/29 23:05 ID:???
>>450
1,000 取ってみてくだせー
453 ◆Nm5090363w :04/02/29 23:05 ID:ESMdxJrR
>>447 を見て気づいたこと。
・「緊急緊急緊急!!」が書き込み終わった後になる
・1001ストッパー書き込み時のオープンモードが読み込みモード
454動け動けウゴウゴ2ちゃんねる:04/02/29 23:06 ID:jHhjurhK
いきなり突っ込むとは…
455動け動けウゴウゴ2ちゃんねる:04/02/29 23:07 ID:JvRnpXfA
ニュー速1000きっちりで終わったよ
456動け動けウゴウゴ2ちゃんねる:04/02/29 23:07 ID:M2qD+kVb
457仕事人 ★:04/02/29 23:08 ID:???
>>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);
}
458仕事人 ★:04/02/29 23:09 ID:???
>>456
微妙
459未承諾広告※ ◆TWARamEjuA :04/02/29 23:10 ID:47xPabMI
>>447
open(OUT,"<$dattemp");
print OUT "1001<><>Over 1000 Thread<>この

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

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

な予感('-')
462動け動けウゴウゴ2ちゃんねる:04/02/29 23:25 ID:7x47pFWz
さて埋まったわけですが

知床の自然で見つけた丸いヽ( ・∀・)ノ● ウンコー
http://news4.2ch.net/test/read.cgi/news/1077334998/
463仕事人 ★:04/02/29 23:26 ID:???
知床の自然で見つけた丸いヽ( ・∀・)ノ● ウンコー
http://news4.2ch.net/test/read.cgi/news/1077334998/


ふむふむ 予定通りか?
464 ◆qb.x27/m96 :04/02/29 23:26 ID:W0afuNnL
if (open(OUT, "+>>$DATAFILE"))
{
my @logdat = <OUT>;
my $lognum = @logdat;
----

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

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

と思ったらまたやり直し、、、
4651001:04/02/29 23:26 ID:BbcWiVlz
やったー
466動け動けウゴウゴ2ちゃんねる:04/02/29 23:26 ID:1iQ36Iim
ヽ( ・∀・)ノ● ウンコー
467動け動けウゴウゴ2ちゃんねる:04/02/29 23:26 ID:fKbOd8s3
あとは、実況にいれて様子見だな。
468動け動けウゴウゴ2ちゃんねる:04/02/29 23:28 ID:fKbOd8s3
subback.htmlが1000になってるのはいいのかな?
469動け動けウゴウゴ2ちゃんねる:04/02/29 23:30 ID:6mdFrnNX
1000超えたスレッドをreadonlyにするってことですかな。
470 ◆Nm5090363w :04/02/29 23:30 ID:ESMdxJrR
>>468
あー、1001ストッパー書き込み時に++$lognum;が必要ですね……。
471動け動けウゴウゴ2ちゃんねる:04/02/29 23:30 ID:iItDTd+D
>>468
駄目じゃないのかなぁ…
472仕事人 ★:04/02/29 23:33 ID:???
>>470
おおっ

入れてみます
473仕事人 ★:04/02/29 23:34 ID:???
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);
$lognum++;
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
474動け動けウゴウゴ2ちゃんねる:04/02/29 23:34 ID:Ur3i+/1M
>>457
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
って必要なの?
475仕事人 ★:04/02/29 23:35 ID:???
$SUBLINE = $subject . " (" . $lognum . ")\n";

$SUBLINE がグローバルになっていて
あとで subject.txt を更新するのに使うと予想。
476仕事人 ★:04/02/29 23:35 ID:???
>>474
しらない
477動け動けウゴウゴ2ちゃんねる:04/02/29 23:35 ID:tbK47Xxd
仕事人ほかいろいろな人お疲れさんです
478仕事人 ★:04/02/29 23:37 ID:???
配ってみる
479動け動けウゴウゴ2ちゃんねる:04/02/29 23:37 ID:w3wmhyN7
>>478
どこに
480仕事人 ★:04/02/29 23:48 ID:???
全部にくばった
481動け動けウゴウゴ2ちゃんねる:04/02/29 23:49 ID:pDxaRHJF
いい加減オープンソース検討しませんか?
ひろゆきがダメと言う悪寒
483動け動けウゴウゴ2ちゃんねる:04/02/29 23:52 ID:w3wmhyN7
中がぐちゃぐちゃだから
484動け動けウゴウゴ2ちゃんねる:04/02/29 23:52 ID:GLX4mUiA
オープンソースは荒らしに利用されるからダメだそうな
485動け動けウゴウゴ2ちゃんねる:04/02/29 23:53 ID:M2qD+kVb
恥ずかしいから見ないでっ
486動け動けウゴウゴ2ちゃんねる:04/02/29 23:53 ID:N/LelD+a
>>445
実況板だったらテストでいちなり導入してもOk。
というのが2chノリ
487動け動けウゴウゴ2ちゃんねる:04/02/29 23:53 ID:miDcWYdc
未承諾さんあたりを拉致して缶づmうwあおまえなにすrあwせdrftgyふじこlp;@
488動け動けウゴウゴ2ちゃんねる:04/02/29 23:54 ID:Oa3NB3JX
■ 2/29 ■ あなたがいるから矢口真里 ■ Part2 ■
http://live8.2ch.net/test/read.cgi/dancesite/1078063896/

うまいこといった?
489動け動けウゴウゴ2ちゃんねる:04/02/29 23:54 ID:qAGI7Tit
芸スポは問題無しみたいです。
【サッカー】エメルソンが3月にも日本国籍取得申請★2
http://news6.2ch.net/test/read.cgi/mnewsplus/1078024681/
490動け動けウゴウゴ2ちゃんねる:04/02/29 23:55 ID:GLX4mUiA
作り直したほうが性能よくなるけど管理人が弄れなくなるからいまのやつ使ってるんだよな>bbs.cgi
491 ◆qb.x27/m96 :04/02/29 23:56 ID:W0afuNnL
>>473
1000行くスレが出る前に聞きますけど今の時点の最新ソースはそれですか

うまく行ってるのかしら
http://live8.2ch.net/test/read.cgi/liveanb/1078063667/
492動け動けウゴウゴ2ちゃんねる:04/02/29 23:57 ID:P807886c
live8はroot ★さん待ちじゃない?
493▲ 某ソレ511:04/02/29 23:58 ID:3Ckm5k37
たぶんバイナリ化せずにソースを入れてるんじゃないかと。
バイナリ化するのはroot ★さんの仕事。
494動け動けウゴウゴ2ちゃんねる:04/02/29 23:58 ID:w3wmhyN7
http://qb3.2ch.net/test/read.cgi/operate/1076733846/608
これはしないの?仕事人 ★さん
495動け動けウゴウゴ2ちゃんねる:04/03/01 00:00 ID:vlCZckrZ
悪いことは言わん。
1000チェックだけでも、別ロックファイルとして*.dat以外にしないとchmodヘルになると思う。
ファイルI/Oを嫌って1ファイルでゴニョゴニョしているほうがパフォーマンスが悪くなると思う。
496 ◆qb.x27/m96 :04/03/01 00:03 ID:OvElWHnn
ERROR!
ERROR:このスレッドには書けません!

---
>>491のスレは1000のチェックではなくてパーミッションチェックで弾かれている予感。
あとは高負荷がかかった時でも大丈夫ならOKなのかな、、
497 ◆qb.x27/m96 :04/03/01 00:08 ID:OvElWHnn
  ↑
1000行ってしまった後にあらため書き込もうとした時の話です。
なんかあまり役に立てなかった悪寒 _| ̄|○
498動け動けウゴウゴ2ちゃんねる:04/03/01 00:12 ID:S3oek8j0
ラスト付近は 95レス/min

ラスト30分で1000までいけるかチャレンジ
http://human2.2ch.net/test/read.cgi/owarai/1078065457/

大丈夫そう?
499動け動けウゴウゴ2ちゃんねる:04/03/01 00:16 ID:TqqN3ObO
>>498
subject.txtが1002になってる
500 ◆Nm5090363w :04/03/01 00:17 ID:GH4N2w1a
>>498
subject.txtではレス数が1002になっている……。
ミナカッタコトニシヨウ
501動け動けウゴウゴ2ちゃんねる:04/03/01 00:19 ID:KZO/IjMi
age
502 ◆LBZUBURIYM :04/03/01 00:20 ID:JrtqeRJZ
1000越え判定の時の$lognumに直接1001を叩き込んじゃだめですか?>判るひと
503未承諾広告※ ◆TWARamEjuA :04/03/01 00:21 ID:uUhORkfL
>>502
それ以前に本文書き込み動作が畳み込まれているので、、、(哀)
504 ◆Nm5090363w :04/03/01 00:23 ID:GH4N2w1a
if($lognum > 999)
{
if (open(OUT,">>$dattemp")) {
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
chmod(0555, $dattemp);
}
これでどうでしょ。

>>502
レス数がきっかり1000で止まる保証がないので、直接1001をいれるとマズいです。
505 ◆LBZUBURIYM :04/03/01 00:25 ID:JrtqeRJZ
>>503-504 サンクスコ。
むうー。修行しよう。
506仕事人 ★:04/03/01 00:36 ID:???
>>504

そね

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1010)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}

507仕事人 ★:04/03/01 00:44 ID:???
まとめ(メモメモ)

処理の流れは

1) とにかく色々チェック。
2) dat に追記。
3) MakeWorkFile で html/xxxxxx.html を作る
  この時に 1,000 超えを判定、 1,001 を書き 0555 にする。
  この関数内で $SUBLINE = $subject . " (" . $lognum . ")\n";
  を作りあとで subject.txt の書き換えに使う。
4) subjext.txt 書き換え
5) ふぅ終了。
508仕事人 ★:04/03/01 00:46 ID:???
問題は 2) で追記したあと 0666 にしていたので
せっかく 0555 で書き込めなくしたのに書き込めていた。

あと bbs.cgi の最初のほうで
unless( -w $DATAFILE){
DispError("ERROR!","ERROR:このスレッドには書き込めません。");
}
を行い、なるべく負荷をさげようと。
509仕事人 ★:04/03/01 00:53 ID:???
大幅なオーバーランはなくなったか → たぶん
前よりも処理は軽くなったか? → たぶん

要観察ですなぁ
510動け動けウゴウゴ2ちゃんねる:04/03/01 01:18 ID:BnaSe/vj
なんか、あまり変わってない気がするのは気のせいに違いない。

#dat追記部分
if (open(OUT, ">>$DATAFILE"))
print OUT "$outdat\n";
close(OUT);
} else {
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}

#ログのカキコ数を取得
if($lognum > 1010)
{
chmod(0555, $dattemp);#念のため
}
elsif($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}

にしたほうがいいかも。
511動け動けウゴウゴ2ちゃんねる:04/03/01 01:28 ID:xl24PgZ6
最大書き込み数がてんでばらばらなのはなんとか
ならないのか?
全レス取得できたのかどうか,すっきりしないんだが。
512動け動けウゴウゴ2ちゃんねる:04/03/01 01:32 ID:Q4w4n0tj
513動け動けウゴウゴ2ちゃんねる:04/03/01 01:34 ID:vlCZckrZ
>>484
>オープンソースは荒らしに利用されるから
誤解されるようなことを振りまかないでー。
ApacheやFreeBSDはオープンソースですが荒らしに利用されていますか?
514動け動けウゴウゴ2ちゃんねる:04/03/01 01:51 ID:n5/8aIYu
>513
穴だらけの(ryを出したらd(ry
515仕事人 ★:04/03/01 02:18 ID:???
こうしたらどうなる?

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

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1010)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
#$lognum++;
open(RDAT,"<$dattemp");
@logdat=<RDAT>;#ログを配列に読み込む
close(RDAT);
$lognum = @logdat;
}
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
516 ◆Nm5090363w :04/03/01 02:43 ID:GH4N2w1a
>>515
レス数のカウントがより確実になって、ちょっと重くなる?
517動け動けウゴウゴ2ちゃんねる:04/03/01 09:41 ID:33tLVDgR
各種cgiテスト専用の板を作ったほうがよさげな悪寒。
518▲ 某ソレ511:04/03/01 09:45 ID:N+YBsNkv
>>517
いちおう運用情報(金)がそれにあたってます。
でも、1000レスとかそういった実験にはむかんとですよ。
519動け動けウゴウゴ2ちゃんねる:04/03/01 10:32 ID:2ktpVplm
>>515
その「ログのカキコ数の取得」ルーチンがレス書き込みより後にある限り
はほとんど変わらないと見た
520動け動けウゴウゴ2ちゃんねる:04/03/01 10:35 ID:2ktpVplm
悪い
上のログ読まずに書いてしまった
いろいろいじった後だったのね
521動け動けウゴウゴ2ちゃんねる:04/03/01 10:36 ID:Hwg46zlr
if($lognum > 1010)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{

ここを

if($lognum > 999)
{
if($lognum > 1010)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
else
{
if(open(OUT,">>$dattemp"))

とかだめかな。
522GlobalService ★:04/03/01 10:48 ID:???
>>521
if($lognum > 999)
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!") if($lognum > 1010);
if(open(OUT,">>$dattemp"))
{

・・・書いてみたかっただけなの
523root ★:04/03/01 11:16 ID:???
昨日は本業超多忙につき、>>360 から未処理。
急ぎで何かしなきゃいけないことある?live8/live9のbbs.cgiの更新とか。

12:00ごろまた来るので、誰かレス番で教えてちょ。
# 午後は少し時間とれる見込み。
ERROR!
ERROR:このスレッドには書き込めません。緊急緊急緊急!!

ホスト*

名前: 2chtubo愛用者〜ヘ(゚д゚ヘ))))))〜61 ◆2CHTUBOC5A
E-mail:
内容:
きねんかきこ。

こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。
-------------------------------------------------------
ちゃんとでてるね。。。
525動け動けウゴウゴ2ちゃんねる:04/03/01 11:31 ID:2ktpVplm
>>522
前 if と後ろ if を混ぜたらややこしいがな
と、思ったら、書きこまれてるし。だめじゃん、仕事人。
527動け動けウゴウゴ2ちゃんねる:04/03/01 12:02 ID:+8ilk7HP
警察板( http://society.2ch.net/police/ )が困った状態なので、お知らせしておきます。
 subject.txt上は1011なのに、実際は2000オーバースレ有り
 (IEで)各スレッドURLでは、1001ストッパーまで表示、書き込み欄なし
 (〃)板トップでは、実際の最終レスまで表示、書き込み欄あり
 (専用ブラウザで)スレ一覧のレス数がずれるものの、書き込み可能
http://society.2ch.net/test/read.cgi/police/1058340116/2917 など

ちなみに、レス数1000近くのスレをageて、次々にお祭りを始めているようです。
http://society.2ch.net/test/read.cgi/police/1040783990/962
他板で宣伝も見つけました。
http://live8.2ch.net/test/read.cgi/livenhk/1078104752/190
528動け動けウゴウゴ2ちゃんねる:04/03/01 12:07 ID:2ktpVplm
つまり >>519 かつ 999 判定より 1010 判定が前にあるせいで
書き込まれてから緊急緊急が出てるわけだな

>>523
急ぎで society の bbs.cgi を元に戻してくださいw
529動け動けウゴウゴ2ちゃんねる:04/03/01 12:07 ID:Xr6oE3E7
530root ★:04/03/01 12:09 ID:???
>>528
society(=oyster17)って、私ログインできるのかな。
531動け動けウゴウゴ2ちゃんねる:04/03/01 12:10 ID:2ktpVplm
ログインできにゃいのか?
つーかもしかして全板この仕様なのか?
532動け動けウゴウゴ2ちゃんねる:04/03/01 12:12 ID:2ktpVplm
でもよく読むと 515 のとおりなら 1010 判定のあとに 999 判定も
通ってるはずだから、止まるんじゃないのかな?
&DispError って、中で exit してるのかな
533動け動けウゴウゴ2ちゃんねる:04/03/01 12:53 ID:ZVH4RhiM
>>460でいいんじゃない?
534仕事人 ★:04/03/01 12:57 ID:???
変更してみる

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1010)#念のため暴走ストッパー
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
535動け動けウゴウゴ2ちゃんねる:04/03/01 13:15 ID:ZVH4RhiM
close(OUT);
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
のほうがいいかも
536動け動けウゴウゴ2ちゃんねる:04/03/01 13:21 ID:ZVH4RhiM
_| ̄|○スマンカッタ
537動け動けウゴウゴ2ちゃんねる:04/03/01 14:15 ID:n5/8aIYu
(´-`).。oO(いつdatに書き込んでるんだろう…)
538名無しさん@どうにか運用中。:04/03/01 16:23 ID:uxU8WZxk
>>537
(´-`).。oO(たぶん別の場所でやってて、そこは今大人の都合で書いてないだけなんだよ、とか言ってみるテスト。)
539仕事人 ★:04/03/01 16:27 ID:???
>>262 とか >>507-509 とか
540名無しさん@どうにか運用中。:04/03/01 16:39 ID:uxU8WZxk
>>539
ご苦労様です。
お茶でもどうぞ。

 ζ
 旦  ⊆⊇
541仕事人 ★:04/03/01 17:13 ID:???
んで
現状は 1,000行ったスレッドは
dat = 1,001 まである
index.html = 1,000 までしか出ない(以前と使用違うけど、がまんの方向で)
subject.txt = 1,001 まである

今回の改修の目的は
2,000 とか 3,000 まで書き込めてしまうのを 1,000 近辺で止める。

なのでどうなるか観察しよう。
542GlobalService ★:04/03/01 17:19 ID:???
>>541
>2,000 とか 3,000 まで書き込めてしまうのを 1,000 近辺で止める。

何が何でも1,000ぴったりで止めるのか
1050ぐらいまで放置するか決めよう
543 ◆Nm5090363w :04/03/01 17:21 ID:DWVIoriX
>>542
1,000 「近辺」というぐらいだから1050でもアリじゃないかな……。
544▲ 某ソレ511:04/03/01 17:22 ID:N+YBsNkv
ちょっとくらいはオーバーしてもいいという方針だったと思うのだが、、
過去ログorソースコード読んだ?
545root ★:04/03/01 17:28 ID:???
1000を書いたbbs.cgiさんが、責任持って1000ストッパーを書いて、
chmod/fchmodしてから終わる、というのはどうなんでしょう。
546GlobalService ★:04/03/01 17:30 ID:???
>543
それなら一週間何も弄らず観察しよう。
547仕事人 ★:04/03/01 17:31 ID:???
それに挑戦したのが >>255 あたりからだったりして、
548 ◆Nm5090363w :04/03/01 17:34 ID:DWVIoriX
>>545
それだと「999を書いたbbs.cgiさん×2+1001以降を書くbbs.cgiさん」な場合に
ストッパーが効かなくなる気がするです。
549root ★:04/03/01 17:36 ID:???
>>548
そっか。当然そうだよね。

なんだか、某DJBに「フーン」って笑われそうな議論だよなぁ。ここでのあがきって。
もちろん、私も含めて。
550仕事人 ★:04/03/01 17:39 ID:???
>>546
何も起らなきゃ永遠に観察。
551動け動けウゴウゴ2ちゃんねる:04/03/01 17:41 ID:tT+9yTVO
1000 近くになると
my @logdat = <OUT>;
のコストがバカにならないんだよね
読み進めてる間に他のプロセスがガンガン書いてる
やっぱ 1 レスにつき 1 バイト追記するレス数ファイルを
持つのがいいんじゃなかろうか
552動け動けウゴウゴ2ちゃんねる:04/03/01 17:46 ID:BnaSe/vj
>>510だとどうかな?
553動け動けウゴウゴ2ちゃんねる:04/03/01 18:09 ID:vlCZckrZ
*.datでなんでもかんでもやろうとしないで、専用ロックファイルに任せたほうがかえって早くなるに一票。
554動け動けウゴウゴ2ちゃんねる:04/03/01 18:23 ID:DanOyoUW
物質からようこそ
また騙されたんだな^^
555動け動けウゴウゴ2ちゃんねる:04/03/01 18:24 ID:8BKPIqaD
ひよこの癖に生意気だぞー
556動け動けウゴウゴ2ちゃんねる:04/03/01 18:25 ID:9FJm/XN+
>>554
くっそぉーーーーーーーあsdfjl;
557動け動けウゴウゴ2ちゃんねる:04/03/01 18:25 ID:zXNHrS78
暇だから騙されてやったぜ
558354:04/03/01 18:48 ID:8AAPGFOi
大改造しているところ大変申し訳ないのだが、
単純に最初のソースの

#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);

の部分を

if($FORM{'subject'} ne ""){#新規スレ立て時
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}

とすればいいような気がする。
559動け動けウゴウゴ2ちゃんねる:04/03/01 19:00 ID:tT+9yTVO
なんでだ?
560 ◆rafale0Mno :04/03/01 19:03 ID:JTTxA+dl
>>559
>>534 かと。
それなら一回555にしたパーミッションが戻ることもないし。

とPerlよく知らないけど口出ししてみる。
561動け動けウゴウゴ2ちゃんねる:04/03/01 19:24 ID:BnaSe/vj
>>558
なるほど。パーミッション調整って新規作成したときのものだったのか。
562動け動けウゴウゴ2ちゃんねる:04/03/01 19:29 ID:BnaSe/vj
>>558
もとのソースだと書きこみが失敗したときでもchmod(0666,)が実行されてたみたい?なので、
if (open(OUT, ">>$DATAFILE"))
print OUT "$outdat\n";
close(OUT);
} else {
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
これだけでもいいかもしれない。
563動け動けウゴウゴ2ちゃんねる:04/03/01 20:11 ID:L7vZN1iP
564動け動けウゴウゴ2ちゃんねる:04/03/01 20:27 ID:FyogV569
>>563
見なかったことにしろ(素)
565354:04/03/01 20:27 ID:8AAPGFOi
DATファイル作成後、DATファイルが666で変わらなければ、レス追加時に666を
設定するのは意味が無いし、>>357 >>508にもあるように、555にしたファイル
が666に戻るのは元々想定していないと思います。
DATファイルが666で変わらないことは、実際のDATファイルや全てのソースを
見ないと分からないので、分かる方お願いします。
566動け動けウゴウゴ2ちゃんねる:04/03/01 20:29 ID:Wu30T9tE
くぁw背drftgyふじこlp;@:「
567仕事人 ★:04/03/01 20:30 ID:???
>>563
FTP で入って chmod 555 しようとおもったら
permition ないって怒られた。
だれの持ち物になっているんだ?

良く起こることなのか?
たまたまなのか?
568動け動けウゴウゴ2ちゃんねる:04/03/01 20:30 ID:DBas2cAU
1000を超えていることを示すファイルを別に作るのは駄目ですか?

if (1000越ファイルアリ)
{
}
else
{
if (1000超えた) {
1000越ファイル作成
}
}
1000超えファイルを物凄い勢いで更新する悪寒(素)
570 ◆qb.x27/m96 :04/03/01 21:18 ID:OvElWHnn
>>567
cgiから作成されたファイルはcgi経由でないと変更出来ない場合ありです。
571 ◆Nm5090363w :04/03/01 21:24 ID:LtyNcyvj
普通にスレストかければいいのかしらん。
572動け動けウゴウゴ2ちゃんねる:04/03/01 21:28 ID:BnaSe/vj
>>562は{が抜けてた。
if (open(OUT, ">>$DATAFILE"))
{
print OUT "$outdat\n";
close(OUT);
}
else
{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
573 ◆qb.x27/m96 :04/03/01 21:56 ID:OvElWHnn
574未承諾広告※ ◆TWARamEjuA :04/03/01 21:58 ID:uUhORkfL
CGI のプロセス ID 付き書き込みデータを、書き込みやさんに渡す。
書き込みやさんから、その結果を SIGNAL として呼ばれるのを待つ。
成功したら SIGUSR1 とか失敗したら SIGTERM とか。(現状の bbs.cgi では SIGNAL は単純に exit; ですよね?)
でもって 10 秒以上経過しても結果が帰ってこなかったら、DispError("ERROR!","ERROR! (゚∀゚)アヒャヒャヒャヒャ")

せっかくのうに環境なんだから。。。
575動け動けウゴウゴ2ちゃんねる:04/03/01 22:00 ID:Y+GqB4AG
>>573
OJDでテストしてみたら、書けちゃいました・・・
576 ◆qb.x27/m96 :04/03/01 22:08 ID:OvElWHnn
577GlobalService ★:04/03/01 22:24 ID:???
http://society.2ch.net/test/read.cgi/police/1040783990/1000 04/03/01 13:47
http://society.2ch.net/test/read.cgi/police/1040783990/1773 04/03/01 22:23
現在も増殖中

他のスレでもこんなこと可能?
578 ◆qb.x27/m96 :04/03/01 22:28 ID:OvElWHnn
これを試してみてくれないかなぁ。。。

----
#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1010)#念のため暴走ストッパー
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
chmod(0555, $dattemp);#←ここに、これ入れたらどですか
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
if($lognum < 1000)#666は1000以下で
{
umask(0);
chmod(0666, $dattemp);
}
}
579 ◆Nm5090363w :04/03/01 22:30 ID:LtyNcyvj
>>578
DispErrorはexitするので、2つ目のchmodは実行されないです……。
580 ◆qb.x27/m96 :04/03/01 22:39 ID:OvElWHnn
>>579
あらら直前にあるのに今気がついた。。。
もう少し考えてみますです。。
581動け動けウゴウゴ2ちゃんねる:04/03/01 22:43 ID:n5/8aIYu
if($FORM{'subject'} ne ''){#新規スレ立て時
#パーミッション調整
umask(0);
chmod(0666, $DATAFILE);
}

これも組み込んだらいいかと
582動け動けウゴウゴ2ちゃんねる:04/03/01 22:44 ID:BnaSe/vj
>>558でいいと思うんだけど、通常の書きこみ時にsubjectが送られたときのことを考えて、
>>562と合わせて、
if(!-e $DATAFILE){
1の書きこみ&パーミッション調整
}elsif(open(OUT,">>$DATAFILE")){
通常の書きこみ
}else{
エラー
}
でどうか。

ところで、今どれが入っているの?
583動け動けウゴウゴ2ちゃんねる:04/03/01 22:45 ID:L7vZN1iP
if($lognum > 1010)#念のため暴走ストッパー
{
chmod(0555, $dattemp) or DispError("ERROR!", "ERROR:chmodできないよ?緊急緊急緊急!!");
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
chmod(0555, $dattemp)が失敗してるのか、
それともどこかで666にchmodされてるのか調べてみるとか
584root ★:04/03/01 23:13 ID:???
>>567
suexecって、たまに「抜けてくる」ことがあります。

ひょっとして、chmod()できないのって、それが原因?
585動け動けウゴウゴ2ちゃんねる:04/03/01 23:15 ID:Jcce8alI
chown、chgrpも銅像?('-')
586仕事人 ★:04/03/02 03:20 ID:???
うーん
実況の各板たらーっと見てきたけど 1,001 で止まっているなぁ

>>563
のスレッドだけの問題なのかどうなのか。
587 ◆Nm5090363w :04/03/02 03:46 ID:LGSXMMts
588仕事人 ★:04/03/02 03:48 ID:???
警察板 は呪われているのか?
589動け動けウゴウゴ2ちゃんねる:04/03/02 03:51 ID:oQ+yX4a+
>>588
配り忘れているとか
590仕事人 ★:04/03/02 03:52 ID:???
もちろんまずは自分を疑えってことで
それは見てみたのでしたー
591動け動けウゴウゴ2ちゃんねる:04/03/02 03:56 ID:oQ+yX4a+
>>590
もしかしてnews6/news7配り忘れていない
592仕事人 ★:04/03/02 03:59 ID:???
どうだろ、、
自動で配布しているからなぁ
version 番号付けて配ってみるです < こんど
593動け動けウゴウゴ2ちゃんねる:04/03/02 04:11 ID:IJTX52N4
警察板
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
のエラーはでますが、いくらでも書けますよ
594 ◆Nm5090363w :04/03/02 04:53 ID:LGSXMMts
これもそうかな……(自作PC板)。
http://pc3.2ch.net/test/read.cgi/jisaku/1047988420/
595動け動けウゴウゴ2ちゃんねる:04/03/02 08:27 ID:TSOc+dgc
>>567
oyster100/200/900番台ならroot師におながいしてchownしてもらえばいいのではないかと。
596動け動けウゴウゴ2ちゃんねる:04/03/02 14:08 ID:RzANnUAw
if (-e $DATFILE && (!-w $DATFILE || -s _ > 512 * 1024)) {
 DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}

#中略

my $lognum = 0;
if (open(IN, "< $DATFILE")) {
 $lognum = (join('', <IN>)) =~ tr/\n/\n/;
 close(IN);
}

if ($lognum > 1010) {
 chmod(0555, $DATFILE);
 DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");

}else{
 if (-w $DATFILE && open(OUT, ">>$DATFILE")) {
  print OUT "$outdat\n";
  ++$lognum;
  if ($lognum > 999) {
   print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
   ++$lognum;
   close(OUT);
   chmod(0555, $DATFILE);
  }
  close(OUT);

 }elsif (!-e $DATFILE) {
  # スレ立て処理
  chmod(0666, $DATFILE);

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

#(´-`).。oO(テストまでしちゃったよ…)
597 ◆qb.x27/m96 :04/03/02 14:28 ID:46NZVWRI
>>534
http://society.2ch.net/test/read.cgi/police/990121724/

>"ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!"

↑これが出ているのに上のスレに書き込めるということは bbs.cgi の序盤のここ↓を通り抜けているということなので
パーミッションがどこかで再変更されているはず。

>#.datが存在してないか書けないならばいばい
>unless(-w $DATAFILE){
>DispError("ERROR!","ERROR:このスレッドには書けません!");
>}
----
http://society.2ch.net/test/read.cgi/police/1040783990/
このスレは現在パーミッションではなくてここ↓で止まっているもよう。

>unless( -s $DATAFILE <= 512000){
>DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
>}


なので一番ぁゃιぃここをこの↓ように追加修正すれば現在書き込めるものも含めて
再度パーミッション変更されるので書き込み出来なくなるはず。

#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
if($lognum > 1010)#1011以上なのに666の暴走ストッパー
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。禁止禁止禁止!!");
}

#禁止と表示されればここ↑で再設定されたはずなので書き込めていないはず。。
598動け動けウゴウゴ2ちゃんねる:04/03/02 22:25 ID:WdyfTS6A
WebProg板だと「情報を小出しにするな」って怒られるんだな
規制とかクリティカルな部分を除いて公開、でもダメ?
599動け動けウゴウゴ2ちゃんねる:04/03/02 22:57 ID:+220nzEb
まぁ普通はブラックボックス部分は除いて公開するのが良いよね。
規制のあたりはサブルーチン化してパラメーターと返り値だけ提示すりゃいいんじゃないの。
600 ◆Nm5090363w :04/03/03 03:55 ID:hilYjOSU
一応転載。

467 :動け動けウゴウゴ2ちゃんねる [] :04/03/03 03:44 ID:rxiuKiD1
http://pc.2ch.net/test/read.cgi/mac/1057421491
1000を越えても止まらないので対応をよろしくお願いします。
601動け動けウゴウゴ2ちゃんねる:04/03/03 03:55 ID:Y4XzXAw3
http://pc.2ch.net/test/read.cgi/mac/1057421491/
1000を越えても止まらないそうな
602動け動けウゴウゴ2ちゃんねる:04/03/03 14:01 ID:/mj7DhWo
ぼたんとぼら
http://live8.2ch.net/test/read.cgi/livecx/1078287853/

1004まで行ってた
603仕事人 ★:04/03/03 20:20 ID:???
現在の bbs.cgi の version

20040301
604 ◆qb.x27/m96 :04/03/03 20:39 ID:Q6TtuXTp
どこがどう変わったのか変更点がよくわからないですがまだ書き込めます
605仕事人 ★:04/03/03 20:41 ID:???
全部のサーバが同じかどうかの指標。
606動け動けウゴウゴ2ちゃんねる:04/03/03 20:44 ID:XN4vgyH7
607 ◆qb.x27/m96 :04/03/03 20:44 ID:Q6TtuXTp
そうですか。。
ではまたしばらく待機しておきます。。。
608▲ 某ソレ511:04/03/03 20:45 ID:dMJAeQ2p
>>606
そこで確認できる範囲では、news7だけ更新されませんね。
live5はまた別だろうし。
609仕事人 ★:04/03/03 20:53 ID:???
おおーっ

news7 も配布先リストに加えました。
610動け動けウゴウゴ2ちゃんねる:04/03/03 21:08 ID:M4qBqVUO
てすつ
611動け動けウゴウゴ2ちゃんねる:04/03/04 08:08 ID:CBckwehY
>>606
そこ新しくできたnews10が入ってないね。
612動け動けウゴウゴ2ちゃんねる:04/03/04 19:26 ID:0CvNWhwU
613動け動けウゴウゴ2ちゃんねる:04/03/04 21:17 ID:2xloAm15
>596
みたいにdatに書き出すタイミングを考慮しないとだめぽ?
614動け動けウゴウゴ2ちゃんねる:04/03/04 21:59 ID:2zvwFYJR
http://society.2ch.net/test/read.cgi/police/990121724/2523
http://bubble.2ch.net/test/read.cgi/natsudora/1047211834/1129

追加
正直、元の方が良かったんじゃないかって気もしないでもない
615動け動けウゴウゴ2ちゃんねる:04/03/04 22:12 ID:/YPjzPXK
datディレクトリをls -lで見てみたらなにか分かるかしらん。
616 ◆qb.x27/m96 :04/03/04 22:25 ID:R3QQxE+y
   ∧_∧
  ( ・∀・) <忙しそうだし、催促せずに待ちますね。。
  ( つ旦)
  と__)__)
617動け動けウゴウゴ2ちゃんねる:04/03/05 13:03 ID:EMh1Qj1K
ギコナビでレスを2325まで確認。
WinXP+IE6SP1では1001 :1001 :Over 1000 Threadが出て終わり。
山本寛斎の制服でPC自作できたよ〜♪
http://pc3.2ch.net/test/read.cgi/jisaku/1055561893/l50
618動け動けウゴウゴ2ちゃんねる:04/03/05 13:15 ID:EMh1Qj1K
ニュー速にこんなスレまで建ってました。
1001ストッパー崩壊
http://news4.2ch.net/test/read.cgi/news/1078410053/l50
619動け動けウゴウゴ2ちゃんねる:04/03/05 18:04 ID:cFF945EX
ためしになつかしドラマ板の1000近いスレをいくつか埋めてみたんだけど
どれも1000突破した。もしかして板、というか鯖によって突破したり突破しなかったりするのか?
620仕事人 ★:04/03/05 18:11 ID:???
ccccc
621外野ァァン:04/03/05 18:12 ID:FmqnTdCB
右、右、右、下、右。
622仕事人 ★:04/03/05 18:22 ID:???
0.7 です。

お薬貰っていってくださいー
623動け動けウゴウゴ2ちゃんねる:04/03/05 18:22 ID:0zPrBh7j
1.0
624仕事人 ★:04/03/05 18:27 ID:???
sub MakeWorkFile{
に最後の手段を追加してみた。
625仕事人 ★:04/03/05 18:27 ID:???
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 > 1020)#最後の手段
{
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);
}
DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");
}
if($lognum > 1010)#念のため暴走ストッパー
{
umask(0);
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
umask(0);
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}

626 ◆qb.x27/m96 :04/03/05 18:39 ID:7NAUewz2
とまった気がする、、、
627動け動けウゴウゴ2ちゃんねる:04/03/05 18:41 ID:4L7Tc/16
>>626
これのこと?
http://qb3.2ch.net/test/read.cgi/operate/1069525567/

479 名前:動け動けウゴウゴ2ちゃんねる[] 投稿日:04/03/05 18:09 ID:Oh96gKaq
1000を超えても延々と書き込めるようです
http://bubble.2ch.net/test/read.cgi/natsudora/1040055595/

481 名前:サザン ★[sage] 投稿日:04/03/05 18:37 ID:???
>>479
とめましたー
628サザン ★:04/03/05 18:46 ID:???
何故か bubble サーバは、
昔立てられたスレッドの所有者が nobody になっているもより。

ということは・・・
629 ◆qb.x27/m96 :04/03/05 18:49 ID:7NAUewz2
この↓あたりも変更直後くらいからパーミッションが変わって書き込めなくなっているもよん


【TBS】うちの子にかぎって・・・【田村正和】
http://bubble.2ch.net/test/read.cgi/natsudora/1047211834/

【チュー】マウススレ【チュー】
http://pc.2ch.net/test/read.cgi/mac/1057421491/
----
ERROR!
ERROR:このスレッドには書けません!
630動け動けウゴウゴ2ちゃんねる:04/03/05 18:59 ID:Do6keLya
>>628
chmodは一切効いてなかったってことね…
631動け動けウゴウゴ2ちゃんねる:04/03/05 19:03 ID:ArllhdPU
引っ越したときに所有者が変わっちゃったのかな?
632仕事人 ★:04/03/05 19:21 ID:???
引越し時に chmod で 777 にするんじゃなく
chown(でしたっけ?) 後 666 にすべきなのか?

ということは、引越し後の正しい呪文は
chown("ch2あぼんあぼん");
chmod($filename,0666);
634root ★:04/03/05 19:41 ID:???
一般ユーザ(にsuexecされたCGI)がchownなんてできないと思うなぁ。
635動け動けウゴウゴ2ちゃんねる:04/03/05 19:52 ID:ArllhdPU
>>634
引っ越しってcgiでやってたです?
636 ◆qb.x27/m96 :04/03/05 19:52 ID:7NAUewz2
1000越えて書き込めていたのは確認した範囲では
去年以前に建立てられたスレのようだったし
今年に入ってから立てられたもので、1000ストッパーが
効いていないものってなかったような、、

サザンさんの>>628あたりに謎の答えがありそう、、、
637root ★:04/03/05 20:04 ID:???
古いスレを中心に、オーナーがおかしいやつがあるから、そいつら修正すればいいってこと?
(ストッパーが効かない原因のひとつ)

ディレクトリの持ち主がその人であれば「消す」ことはできるから、
例えばnobodyとかが持ち主のファイルを探して、一斉にこんなかんじにすればいいのかな。

(1000000000.dat のオーナーがおかしいとする)

cp -p 1000000000.dat tmp1000000000.dat
rm -f 1000000000.dat
mv tmp1000000000.dat 1000000000.dat

2行目でいきなりmv -fしてもいいけど、なんだかいやな予感がするんで。

find -user nobody とかして、該当のファイルについて一斉にやればよさそうな気がする。
638root ★:04/03/05 20:06 ID:???
FreeBSDでは、

cp -p 1000000000.dat tmp1000000000.dat
mv -f tmp1000000000.dat 1000000000.dat

でOKでした。Linuxでもやってみるか。
639root ★:04/03/05 20:08 ID:???
あ、そっか。Linuxでsuできる環境もってないや。
どなたか、実験きぼんぬ。

% mkdir test
% cd test
% sudo touch A
% cp -p A A.tmp
% mv -f A.tmp A

で、そのユーザのAになれば無問題。
640仕事人 ★:04/03/05 20:14 ID:???
>>635
いや banban で
641 ◆qb.x27/m96 :04/03/05 20:50 ID:7NAUewz2
>>637
古いスレでオーナーがおかしいやつの中で
1000間近なスレのURIがいくつか分かりますか?
642動け動けウゴウゴ2ちゃんねる:04/03/05 20:51 ID:zMD0nJk9
http://ex2.2ch.net/test/read.cgi/entrance/1078325048/

ゴミ箱に移転?したスレに書き込み出来るんですが、
報告はここでよろしいですか?
643動け動けウゴウゴ2ちゃんねる:04/03/05 20:51 ID:Q+E4n3Ax
すみませーん、削除対象で移転されたっぽいスレがあるんですが
http://ex2.2ch.net/test/read.cgi/ex2tr/1078325048/
「移転したよ。。。 」スレに書き込みができるようです。
http://ex2.2ch.net/test/read.cgi/entrance/1078325048/

ここで改良している事に関係あるんじゃないかと思ったので
一応報告を。
644root ★:04/03/05 20:59 ID:???
>>641
例えばbubbleサーバのnatsumeloj板なら、

find ./public_html/natsumeloj -user nobody -name \*.dat -print

なんてのを流せば、すぐわかるかと。
これをサーバの数分、板の数分やればいいかな。

ひまをみて、_service/を見て板名とってきてfindかけて、
オーナーをfixするためのshell scriptでも書いてみましょ。
できたら、各マシンで手分けして流していただくということで。
645動け動けウゴウゴ2ちゃんねる:04/03/05 20:59 ID:5slTJrqb
>642-643 転載しますた

■ 調子の悪いスレッドの修理承り口
http://qb3.2ch.net/test/read.cgi/operate/1069525567/488
646動け動けウゴウゴ2ちゃんねる:04/03/05 21:00 ID:cFF945EX
止まらなかった原因は単にchmodが効いてなかったってだけなのかー。
647動け動けウゴウゴ2ちゃんねる:04/03/05 21:01 ID:ttS6GSUH
>>644
引っ越しのときにdatをchownするだけではダメですか?
648root ★:04/03/05 21:04 ID:???
移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

というか、普通はこんなこと起きない気がしますね。< オーナが違う
途中でsuexec環境に変わった場合にのみ、起こるはず。

あるいはsuexecがバグっていて、「httpdのオーナーが抜けてきちゃった」場合とか。
# 経験したことあります。
649動け動けウゴウゴ2ちゃんねる:04/03/05 21:04 ID:Q+E4n3Ax
移転しても移転しても書き込めるもよう。
>>645
これは「調子の悪い」とは違うと思うが。
650root ★:04/03/05 21:05 ID:???
>>648 補足。
> 移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

理由: マシンをまたいだファイル移動の時に、オーナーが変わるから。
651動け動けウゴウゴ2ちゃんねる:04/03/05 21:07 ID:Q+E4n3Ax
移転跡の書き込みがとめられてません。
http://ex2.2ch.net/test/read.cgi/entrance/1078325048/ 2回目の移転スレ

http://ex2.2ch.net/test/read.cgi/ex2tr/1078325049/ 1回目の移転スレ
http://ex2.2ch.net/test/read.cgi/ex2tr/1078325048/ 元スレ
652動け動けウゴウゴ2ちゃんねる:04/03/05 21:10 ID:5slTJrqb
>649>651
ここで同じような報告を繰り返されてもご迷惑になるだけかと
653未承諾広告※ ◆TWARamEjuA :04/03/05 21:16 ID:JZ5VNBHA
>>639
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:13 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 root root 0 Mar 5 21:12 A
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A.tmp
[(・∀・)ニヤニヤ test]$ mv -f A.tmp A
[(・∀・)ニヤニヤ test]$ ls -la
合計 8
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:14 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A
[(・∀・)ニヤニヤ test]$
654 ◆qb.x27/m96 :04/03/05 21:18 ID:7NAUewz2
>>644
色々と考えられる事はあるのですが順番にやっていかないと
どれが原因か分からなくなりそうなので、まずこれから。。

見つかったスレに1000番目を書き込んだ時にこれ↓が表示されるかどうかが知りたかったんですよ。
>"ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!"


で、おそらく表示されるだろうとは思うのですが
1000 over を判定しているのはこれ↓を書き込む為にしているような、、
>"1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n"


cgiの最初の方でこれ↓しか見ていないのは負荷軽減の為だと思うのですが
1000を越えているかどうかを最初に見ればパーミッションがどうなっていようと
1000を越えているスレには書き込めないと思うのですけど、既出の問題なのかしら、、

>#.datが存在してないか書けないならばいばい
655未承諾広告※ ◆TWARamEjuA :04/03/05 21:18 ID:JZ5VNBHA
>>653
drwxr-x--- 24 root root 4096 Mar 5 21:09 ./
drwxrwxrwx 21 root root 4096 Feb 25 12:56 ../
[(・∀・)ニヤニヤ root]$ mkdir test
mkdir: ディレクトリ `test' を作れません: 許可がありません
[(・∀・)ニヤニヤ root]$
656root ★:04/03/05 21:34 ID:???
>>653
さんくす。Linuxでも問題なさそうですね。
んじゃ、shell script作ってみます。

今日はJimさんデーの2日目なんで、明日以降になるかもしれませんが。
657root ★:04/03/05 21:35 ID:???
>>655
そういうもんです。
658動け動けウゴウゴ2ちゃんねる:04/03/05 23:02 ID:58ZqMPgU
ここまで読んだ
引越し屋バンバンが地方営業なのがわかった
659root ★:04/03/06 03:05 ID:???
902のカーネルだけ、5.2.1-RELEASE-p1に上げてみた(i386モード)
しかし、状況は変わらず。
660root ★:04/03/06 03:10 ID:???
options AAC_DEBUG=3
とか入れてみるか。
661root ★:04/03/06 03:20 ID:???
うひょ。>>659-660 は派手な2連続誤爆だ。
662動け動けウゴウゴ2ちゃんねる:04/03/06 15:19 ID:USLd2Q99
banbanって引越屋のことだったのか
663動け動けウゴウゴ2ちゃんねる:04/03/07 21:26 ID:MP8Xemyf
バンバンってデカレッドじゃないの?
664動け動けウゴウゴ2ちゃんねる:04/03/07 21:27 ID:qZEyZKFG
バンバンギシギシ
665動け動けウゴウゴ2ちゃんねる:04/03/07 22:15 ID:broqP95X
料理番組?
666動け動けウゴウゴ2ちゃんねる:04/03/09 00:13 ID:zPCTrTyc
ズンズンパンパン?
667動け動けウゴウゴ2ちゃんねる:04/03/09 00:42 ID:tLgqnGkZ
さぁ〜ちこぉ〜♪
  思いどうりにぃ〜♪
668動け動けウゴウゴ2ちゃんねる:04/03/11 15:42 ID:26zSxLur
1000越えて書き込まれてたスレ発見。
真・スレッドストッパーのガイドライン
http://that.2ch.net/test/read.cgi/gline/1022203584/l50
試しに書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と出ました。
このスレが建ったのは2002年、>>636で書かれている去年以前に建ったスレ。

手を加えるならXXX 名前:書けませんよ。。。 投稿日:停止
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ と本当にスレッドストッパーかけてくださいと冗談言ってみる。
669動け動けウゴウゴ2ちゃんねる:04/03/11 15:45 ID:26zSxLur
ギコナビで書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と表示されているが実際には書き込まれてます。

670動け動けウゴウゴ2ちゃんねる:04/03/11 16:14 ID:jREFi/m4
>>668-669
止まったみたいだね
671動け動けウゴウゴ2ちゃんねる:04/03/11 16:36 ID:26zSxLur
>>670
止まってるの確認しますた。
672仕事人 ★:04/03/11 16:37 ID:???
自動で止まった?
673動け動けウゴウゴ2ちゃんねる:04/03/11 16:45 ID:pdJbVuqR
>>672
誰も手を加えてないのなら自動かと
674動け動けウゴウゴ2ちゃんねる:04/03/11 19:03 ID:yZZ2AD3B
こっちに誘導されて来ました

yournet.ne.jpの規制が先ほど解除されたのですがlive10の規制が解除されていないようです。
解除の方よろしくお願いします。
675動け動けウゴウゴ2ちゃんねる:04/03/11 19:18 ID:EKWG2x5q
ここじゃないとおもう
676動け動けウゴウゴ2ちゃんねる:04/03/11 19:23 ID:/dqMBLPO
規制絡みの設定のひとつF22が入ってないんじゃない?>live10

【Project peko】2ch特化型サーバ構築作戦 Part8
http://qb3.2ch.net/test/read.cgi/operate/1078972549/

19 名前:root ★ 投稿日:04/03/11 13:36 ID:???
live10, f22への登録おながいします。>サザンさんかな。

【実況板】 live5/7/8/9 鯖 【専用スレッド】その4
http://qb3.2ch.net/test/read.cgi/operate/1078921755/359

677動け動けウゴウゴ2ちゃんねる:04/03/12 01:07 ID:D3JJ4bnS
1001壊れた?

リンドウズ(Lindows)はこれからどうなるか
http://pc.2ch.net/test/read.cgi/os/1025533454/
678動け動けウゴウゴ2ちゃんねる:04/03/12 01:11 ID:VMFakFdZ
UNIX板でも、1001超えちゃいます
Plan9
http://pc.2ch.net/test/read.cgi/unix/990293679/
679動け動けウゴウゴ2ちゃんねる:04/03/12 01:23 ID:m/XTLq3m
>>677
1021で止まったね
680動け動けウゴウゴ2ちゃんねる:04/03/12 11:30 ID:dfBaKHPM
まとめると1001突破するけどそのうち止まるってこと?
681 ◆qb.x27/m96 :04/03/12 13:05 ID:H9TO5cST
そのうち、じゃなくて1021で止まる、ですね。
682 ◆qb.x27/m96 :04/03/12 13:13 ID:H9TO5cST
>>625 ソース


>if($lognum > 1020)#最後の手段
          ↑
       これを超えたら
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");

それ以降は↓になるわけです。
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
683動け動けウゴウゴ2ちゃんねる:04/03/12 13:25 ID:dfBaKHPM
最後の手段が効いてるけど緊急緊急緊急は効いてないってことか
最初から$lognum > 1000で判定しない理由は何だっけ?
684 ◆qb.x27/m96 :04/03/12 14:00 ID:H9TO5cST
効いてないのは古いファイルが chmod(0555, $dattemp); 出来ていないから。
そこで 1020を超えた時点で条件に引っ掛けて、datファイルを新しいファイルにコピーして
そのファイルを chmod(0555, $dattemp); している。

その後今までの古い datファイルは消去。
新しいファイルはパーミッションが 0555 になっているので今度は「緊急緊急緊急」で分岐するというわけ。
685動け動けウゴウゴ2ちゃんねる:04/03/13 02:01 ID:ldPMDkf/
http://qb3.2ch.net/test/read.cgi/operate/1069525567/528-
最近スレ移動の後のストッパーが聞いてなくて
書き込めてしまうのが続出してるみたいなんですが、
これもここに報告でいいんでしょうか?
686▲ 某ソレ511:04/03/13 03:00 ID:1eDifo9s
>>685
たぶん移転するためのcgiはbbs.cgiじゃないから
ここじゃないほうがいいかなぁ、、
まあ、もう書いちゃってるんで言ってもしょうがないですが。
687動け動けウゴウゴ2ちゃんねる:04/03/13 03:02 ID:ldPMDkf/
う〜ん、ここで1000ストッパーの改造がはじまってから、
>>685の現象が多発するようになったので、
関係あるのかな?って思ったんですが、、、
ハテサテ
688動け動けウゴウゴ2ちゃんねる:04/03/13 15:34 ID:rcL9p/fK
>>685 >>687さんに同意で。。。
格段に多いですよ 移転痕ストッパー外れ。
689動け動けウゴウゴ2ちゃんねる:04/03/13 15:42 ID:2cDjPuwH
スレスト、ゴミ箱移転跡が移転すると書き込めるようになるのは仕様です
690動け動けウゴウゴ2ちゃんねる:04/03/13 20:41 ID:wehh8Qg9
1000ストップの判断をしたあとで書き込んだ方がいいと思うんだけど
そうしない理由って何かあるの?
691動け動けウゴウゴ2ちゃんねる:04/03/14 22:21 ID:UADx2/NY
Perlで書けよな。
高速だし、柔軟性あるし、大抵のサーバーで動くし、機能的にも問題ない。
PHPでは絶対書くな。
692動け動けウゴウゴ2ちゃんねる:04/03/14 22:31 ID:0g41eqz9
>>691
2chのスクリプトはCじゃありませんでしたか?
俺の勘違いなのかのぅ。
693動け動けウゴウゴ2ちゃんねる:04/03/14 22:37 ID:t0ZCihJv
bbs.cgiはPerl
read.cgiはC
694動け動けウゴウゴ2ちゃんねる:04/03/15 00:58 ID:/V72idmY
実況鯖だけかもしれないけど、bbs.cgi は perlcc で C にしてたような。
695 ◆BDFCNV1.to :04/03/15 01:00 ID:ru5qIIUm
perlcc って C になるの?
696動け動けウゴウゴ2ちゃんねる:04/03/15 01:35 ID:/V72idmY
ひぇ〜ごめんなさい。C というよりはバイナリ実行形式でした < perlcc
ちなみにオプションをつければ C のコードも出せるようで。半可通でスミマソン
697root ★:04/03/15 02:16 ID:???
>>695
(巨大な).cファイルに変換されて、Cコンパイラでコンパイルされますです。
.cファイルも取り出せますが、読めたもんじゃありません。
698動け動けウゴウゴ2ちゃんねる:04/03/15 13:14 ID:PM/gJL/z
停止済みのスレッドの移転の場合は再停止(もってなければお願い)
停止前のスレッドの停止+移転の場合は移転してから停止。

が正しい措置と思われ。
699動け動けウゴウゴ2ちゃんねる:04/03/15 13:39 ID:mog12nGi
>>697
そーなるとperlccで吐くコードではまだまだ無駄がありそうでつね。
やはりC(++)で最適コードを書いたほうがいいのかな・・・?
700▲ 某ソレ511 ZC188075.ppp.dion.ne.jp:04/03/15 13:41 ID:D4rWoUrA
>>699
ひ(ry がさわれなくなるからCで書くのはダメ、なんじゃなかったかな。
ただ、トラックバック機能のためにread.cgiをちょっと改造してたところを見ると
もしかしたらCもさわれるのかもしれないけど。
701動け動けウゴウゴ2ちゃんねる:04/03/15 13:42 ID:YfO8xvei
ひろゆきがいじれなくなるというデメリットが
702動け動けウゴウゴ2ちゃんねる:04/03/15 13:45 ID:zc7Kci4D
むしろ触らせないようにするほうが正解かも
703動け動けウゴウゴ2ちゃんねる:04/03/15 14:53 ID:ZVqT935Q
>>689 >>698
>>687-688の意味がちゃんと伝わってない希ガス

>スレスト、ゴミ箱移転跡が移転すると書き込めるようになるのは仕様です
「移転すると」ってのは鯖移転だと言いたいようだけど、
>>687-688の指摘はそうじゃなくて

削除人が移転やスレスト呪文唱えた直後のスレッドなのに、スレストが効いてない
=パーミッションが書き換わってない ってことです。

>>686に同意しつつも一応念押し。

>>702
触らせないようにすれば、その人に全面的にお任せ になるだけかと。
704動け動けウゴウゴ2ちゃんねる:04/03/15 15:39 ID:mog12nGi
>>700
なるほど。

>>702の意見も正解かもしれませんな。

C言語版のしっかりしたメンテナがいればひ(ryは触る必要はないと思われ。
705動け動けウゴウゴ2ちゃんねる:04/03/16 00:33 ID:Mp0XHTM3
>>695
吐き出すbinaryも巨大。
706動け動けウゴウゴ2ちゃんねる:04/03/16 09:58 ID:XSHOf7FX
ここでC版の開発してますな。とまっているけど。

bbs.cgi開発【WebProg板】
http://pc2.2ch.net/test/read.cgi/php/1019171453/l5
707未承諾広告* ◆TWARamEjuA :04/03/16 12:38 ID:IOfzCQhJ
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod
ちょっとニヤニヤしながら眺めていました。
708動け動けウゴウゴ2ちゃんねる:04/03/16 16:43 ID:NnpYf1ai
>>703マジで多いです
スレ移動した後、移転後をさらに停止させなきゃならないので
2回スクリプトを走らせなきゃならないし、ログも2倍溜まってるような・・・・・

ソースは無くて感覚だけど、ここで1000ストッパーいじりがはじまってから
増えたのは確かだと思う
>>686だとしても、どこに書きゃいいんだか
管理人に連絡か?
709動け動けウゴウゴ2ちゃんねる:04/03/22 00:55 ID:E6MIja74
>>707
安定性に問題があるだろ、氏ね。ウザイ。
710動け動けウゴウゴ2ちゃんねる:04/03/31 21:36 ID:RCwxJg1s
ここまで斜め読みでカキコ。
dat書き込み時にレス数を数えて1000達成したら、
その場でストッパーかけないと本来はダメでしょうね。

理由は、数える→1001スレストの間に
他のプロセスがdatに書き込む可能性がありますから。
711動け動けウゴウゴ2ちゃんねる:04/04/01 19:58 ID:50q0Uk4B
flockくらいかけなさいよね
712見習い▲ ★:04/04/01 21:31 ID:???
flock 禁止になっんですよ。
713動け動けウゴウゴ2ちゃんねる:04/04/01 21:42 ID:Txu73nUn
何で?ぜんぜん書き込めなくなったから?
714動け動けウゴウゴ2ちゃんねる:04/04/01 23:17 ID:50q0Uk4B
>>712
flock処理周りの実装バグったんじゃねーの?
過去のバグを前提にシステムのポリシー決めてたら
ろくな方向に向かわんぞ。
「OSによって問題がある」とかなら
symlinkで代替してもいいしさ。
そもそも書き込みは排他を前提にしないと
単純に設計がおかしいってことになる罠

排他無しは
ときどきリセットされるアクセスカウンターと同じ設計で
それは直すべきもの
715動け動けウゴウゴ2ちゃんねる:04/04/01 23:20 ID:50q0Uk4B
そもそもサーバー構成がまともじゃねぇよ。
表側に位置するCGIサーバー群は全て同じ仕様と内部構造にして
DNSラウンドロビンにて負荷分散。
データ管理は裏方のDBサーバー。

DBはMySQLみたいな汎用RDBMS使ってもいいし、
NFS使ってUnix FSだけで管理してもいいし(その扱いは今とほとんど同じ)
裏と表の間でやりとりする専用プロトコルと専用メソッドを開発してもいいし。
716動け動けウゴウゴ2ちゃんねる:04/04/01 23:28 ID:50q0Uk4B
でもって、クライアント側からのリクエストが閲覧だけのとき(書き込みではないとき)
の処理を徹底的に減らす必要があるな。
閲覧処理で行われる「いつもやってる計算」の中の「いつも結果が変わらない処理」
は書き込みのときに全て終らせてキャッシュさせておく。
主にHTMLに対する整形があるだろう。
書くレス番ごとのHTML整形されたファイルを作ったり
1-100を選ばれた場合の整形済HTMLを用意したり。

あと最も激しい負荷の矢面に立たされる読込処理のCGIは
C/C++で書いておく。そしてstatic link。
もしくはC/C++で書かれたプログラムをapache module化する手もある。
ここ数年仕様がほとんど変わってないんだから
これからも仕様は変わらないだろう。
「変更容易だが速度は遅い」という特性のスクリプティング言語を使っても
あまりメリットないよ。

「えー。Cわかんないよ。Perlならわかるけど」
とかいうなら、おまえんちのApacheはPerlで書かれてるのかと問いたい。
717動け動けウゴウゴ2ちゃんねる:04/04/01 23:32 ID:50q0Uk4B
CGIとしてのperlを高速化したいなら
mod_perlにするかprelinkを使うのをおすすめ。
prelinkツールにてperl本体を前処理しておけば
perlの起動が高速化される。
718未承諾広告※ ◆TWARamEjuA :04/04/02 08:25 ID:RlsJBx6I
鳥インフルエンザキャリアの人?(w

だったら焼却漏れがありますよと伝えなきゃ(嬉)@T波町
719▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/02 09:31 ID:TSOc+dgc
最近過去ログ周りに注力しているせいか放置されている最寄ですが、
bbs.cgiのmod_perl化は検討されています。

ただ今はperlccによるバイナリ化で
それなりに効果を挙げているようなので現状でとまっているようです。

しかし吐くCコードとバイナリが巨大なので
メモリを圧迫しているということはあります。
理想はC化なのですが、そうするとひ(ryが扱えないということらしいです。

read.cgiは既にCです。
I/Oのはげしいスレはdatは常時オンメモリです。

NFSマウントはセキュリティ上あまり好ましいものではありません。
余計なポートを空けることになるからです。
# NFS over HTTPはできそうですが、結局負荷増につながりそう。
720▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/02 09:34 ID:TSOc+dgc
>>719
続き。
2chにおける一番の負荷はディスクI/Oです。
そして一プロセスあたりで一番使うのがbbs.cgiです。

root師の言葉を借りるならば、「1にI/O、2にI/O・・・」だとか。
7217M. ◆dq7M./4Uw. :04/04/02 13:16 ID:0I3x2u/S
>理想はC化なのですが、そうするとひ(ryが扱えないということらしいです。
こうゆうところがひろゆ子らしいとゆーかなんとゆーか。。。
722▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/02 13:59 ID:TSOc+dgc
後このスレで議論されまくっていますが、
bbs.cgiは仕様変更が多いのでチューンがめちゃくちゃ甘いですね。

コードの整理とC化で倍速になりそうな悪寒。
723見習い▲ ★:04/04/02 14:09 ID:???
>>722
1,000倍になると思われ、

で、現在不具合はあるのかな? < bbs.cgi
724root ★:04/04/02 14:14 ID:???
>>723
個人的には、サーバ落ちによるものを除いても、復帰依頼の回数がやや増えた気がしますね。
ただ、復帰屋さんにまめに動いていただけているので、運用でカバーできているような気もします。
725動け動けウゴウゴ2ちゃんねる:04/04/02 14:42 ID:YXn5ZZX7
現行のbbs.cgiのソース公開は無理でも、Cで一から作り直すのは駄目なんですか?
それこそ、オープンソースで遣れば荒らし対策とかもちゃんと出来そうな気もするし。

ひろゆきの気持ちとしては、弄れなくなるのは「嫌」なのかも知れないけど、運用とし
ては別に良いんじゃないかぁ。現行だって随分人任せみたいだし(w
726見習い▲ ★:04/04/02 14:47 ID:???
>>725
そこは管理人から何回も名言されているので
私はその言葉を聴いて私として行動していくだけです。

あなたはあなたの道を行けばいいだけかと、
誰も邪魔しないと思います。
前進あるのみ。
727動け動けウゴウゴ2ちゃんねる:04/04/02 15:47 ID:7gYfzu4s
ひ(ry はPerlしか使えないんだっけ?
でも最近「弄った」とか言っているの見たことないし、
ひそかにC化しちゃってもいいんじゃないの?ばれないって (w

で、flockが使えないから 排他処理全くしていないって本当なの?
本当ならすごいね。
728動け動けウゴウゴ2ちゃんねる:04/04/02 15:49 ID:1cSqnNjs
ひはPHPもつかえます
729動け動けウゴウゴ2ちゃんねる:04/04/02 16:20 ID:TSOc+dgc
>>727
一応こんなのはあるようですが、やはり一からスクラッチしたほうがいいのかな。
http://pc5.2ch.net/test/read.cgi/php/1019171453/164
730▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/02 16:23 ID:TSOc+dgc
>>729
あ、またコテハン付け忘れたーw
7317M. ◆dq7M./4Uw. :04/04/02 17:04 ID:0I3x2u/S
あれ、男爵生きてたのか。>729
732動け動けウゴウゴ2ちゃんねる:04/04/03 00:10 ID:FQCdjyRh
1ディレクトリーの中にファイルは多くて何個ある?
数千個越えてくるとディスクI/Oの負荷が高くなりやすい。
それを防ぐために1階層か2階層はサブディレクトリーによる分類が必要。
squidのキャッシュディレクトリーを参考にな。

メモリ搭載を増やしてディスクキャッシュに頼るという逃げもあるが
根本的には「必要とされないデータをディスクから読む」という
動作を減らす設計が必要。
URLの末尾"l50"でアクセスするユーザーが大半なのに
毎回読まれるたびに1番レスから全部読んでいたら無駄が大きい。
その場合l50専用のファイルを「書き込み時」に生成するとか
逃げ方はいろいろある。
インデックスファイルと本文ファイルを分けて
インデックスファイルを読むことによってレス番からオフセットを求めて
本文ファイルを読むときはオフセット使って一気にfseekする手もある。

mysqlでも使っておけとと言いたいところだが、
ファイル使うにしてもおかしな設計だと
その負荷の大半は「無駄な負荷」になるんだよ。

ていうかflockはしておかなきゃ。
733ひろゆき@どうやら管理人 ★:04/04/03 04:34 ID:???
flockを使わない実装のほうが負荷が低いですよ。
734動け動けウゴウゴ2ちゃんねる:04/04/03 07:11 ID:NW9nxuLR
ボッキage
735動け動けウゴウゴ2ちゃんねる:04/04/03 08:39 ID:Lo74GCgh
$ /usr/bin/time perl -e 'open(F,">>/tmp/xxx");for($i=0;$i<100000;$i++){flock(F,LOCK_EX);flock(F,LOCK_UN)}'
0.16user 0.07system 0:00.22elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k

flockはたいした負荷じゃないべ
736動け動けウゴウゴ2ちゃんねる:04/04/03 08:51 ID:Lo74GCgh
>>719
> NFSマウントはセキュリティ上あまり好ましいものではありません。
> 余計なポートを空けることになるからです。

NFS通信するホストは物理的に近隣に配置して
それぞれLANカードを1枚余計に搭載してプライベートアドレスを割り当てて
HUB経由直結でプライベートネットワークを構築して
そちら側からだけ通信許可すれば外向きにポートが開かないので
セキュリティー上の問題は無いと考えて良い。
それが困難ならipchains等によるフィルターも有り。
737動け動けウゴウゴ2ちゃんねる:04/04/03 09:05 ID:Lo74GCgh
ていうかbbs.cgiとread.cgiのソースはどこよ?
738動け動けウゴウゴ2ちゃんねる:04/04/03 09:07 ID:pkDYhLfb
非公開
739▲ 某ソレ511 Y039073.ppp.dion.ne.jp:04/04/03 09:09 ID:Wi42VsNX
bbs.cgiはひどいスパゲティソースで、見た人が次々に消えてしまう
らしいから、一から作ったほうが早いかもよ。
ということで、がんばれ。>>736
740root ★:04/04/03 09:11 ID:???
>>736
いわゆるNASなどを使ったソリューションではよくある形ですね。
10.0.0.0/8とかつけとけばいいと。

でも、NFSとflockって大抵の場合、きわめて仲が悪かったり。
(私は何度も痛い目にあいました)

いずれにせよ、細かなI/Oが多数発生するような系では、
flockはともかくNFSを使う気は全くないですね。
NFSだと、Apache的にEnableMMAPやEnableSendfileとかがうまくないので、
パフォーマンス的に激しくつらいです。

例えばhome directoryの共有みたいな用途には便利だし、
うまくやれば管理も楽なので、NFSという技術そのものを否定するものではありませんです。
単純にライブな掲示板システムには、ちょっとなぁというだけで。

で、flockは >>735 みたいなやり方の負荷は、確かに高くなりません。
でも、他の人を「待たせる」ことが、そもそも負荷というか、重荷というか、コスト高になります。

掲示板システムって、もう、待たせちゃいけない。システムも、ユーザも。
待たせるぐらいなら、他の手段(rename()をうまく使うとか)を使うですね。

某氏じゃないけどNFSはこういう用途に使う場合には、
Network Failure Systemだぐらいに思っていたりして。
741動け動けウゴウゴ2ちゃんねる:04/04/03 09:21 ID:Lo74GCgh
>>740
またせちゃいけないからflockはつらいってか。
じゃあ手段1。書き込む先のファイルを分けることだな。
$thread_num = スレ番号;
$pid = $$;
open(WRITE,">$base_directory/$thread_num/$pid");
でもって、これらをマージするのは別のデーモンが行う。

もしくは手段2。デーモンがunixソケットの口を開けて待っていて
bbs.cgiはそのデーモンに向かって次々と書き込みリクエストを投げつける。
実際のファイルへの書き込みはデーモン1プロセスが行うので
排他処理は不要。

ていうか俺が作れってか
742root ★:04/04/03 09:26 ID:???
>>741
> ていうか俺が作れってか

期待してますです。

私は「作られたものの性能をできるだけ発揮させる」とか
「既にある仕組みを用途に合わせて適用する」とかいうのは
なんとかやれますけど、スクラッチから作るのは正直苦手なんで。
743動け動けウゴウゴ2ちゃんねる:04/04/03 09:46 ID:Lo74GCgh
NFSとflockの両方を提案したがこれは両方の組み合わせを提案したわけじゃないのであしからず。
NFSは「読込負荷の分散のためラウンドロビン化された表向きCGIサーバー群」が
データを抱える裏方のサーバーに読みに行く場合のみ。
flockは書き込みに関してだけで、これは単一のホストがローカルドライブに対して行う。

俺が考えている構成は以下のような感じ。
まず表向きのCGIサーバー群を用意してラウンドロビン化。
裏方サーバーはデータの管理専用で板ごとに分散。
表と裏の通信はTCP上の独自プロトコル。

表サーバーについて: read.cgiは直接裏のサーバーに問い合わせるのではなく
表サーバー内で動作するキャッシュ機能提供のデーモンを経由する。
キャッシュ能力を持つデーモンは逆proxyの効果を上げる。

裏サーバーについて: 読込と書込の2つのデーモンを走らせてTCP listen。
書込デーモンはTCP口のところである程度バッファ能力を持たせておけば
過去flockを使ったとき発生した「待ちのための負荷増加」を減らせるはず。
読込デーモンの処理を極限まで減らすため、
HTML化やl50分の切り出し等、読込時によくある動作は書込デーモンが
あらかじめ行ってファイルへ書き出す。

本当は読込デーモンと書込デーモンを一体化させて
できるだけファイルを経由しないオンメモリ動作にした方がさらに効率的なのだが
開発に時間がかかるしバグ取りが大変だしメンテできる人が減ってしまうことになる。
744動け動けウゴウゴ2ちゃんねる:04/04/03 09:52 ID:Lo74GCgh
743続き

書込時の流れ:
[表鯖]bbs.cgi

[表鯖]書込デーモン
(チェックやフィルタなどはこことbbs.cgiだけで行い裏の負荷を下げる)

[裏鯖]書込デーモン

読込時の流れ:
[表鯖]read.cgi

[表鯖]読込デーモン
(キャッシュ能力を持たせて逆proxy状態に)

[裏鯖]読込デーモン

表鯖はデータを抱えない同一構成のマシンを大量に並べてラウンドロビン化。
そうすりゃ表鯖にいくら負荷をかけても数の力でごまかせる。
ていうかこれだとNFSは不要か。
745未承諾広告※ ◆TWARamEjuA :04/04/03 10:47 ID:Jzrgu6KC
そうそう、書きこむ人 (bbs.cgi) がイパーイいるから 3000 超えちゃったり。
dat 直読みも表面的には「直読み」だけど本当は DB アクセスにしちゃうとかね。
AddTypeapplication/x-httpd-cgi.dat
AddHandlercgi-script .dat
とかとか。
746見習い▲ ★:04/04/03 16:27 ID:???
そして次の世代の2ちゃんねるが生まれて来るんですね、
みんながんがれ
747動け動けウゴウゴ2ちゃんねる:04/04/03 16:28 ID:ezVwSdG7
748動け動けウゴウゴ2ちゃんねる:04/04/03 16:31 ID:ezVwSdG7
途中で書き込みしてしまいました。1時間ほど前からhuman3dでます、対策よろしく
749動け動けウゴウゴ2ちゃんねる:04/04/03 20:47 ID:dqjQ8msk
見習い▲ = 仕事人 = 夜勤 = Z社員 でしたっけ?

ラウンジとかの人の多いところには排他入れたいけど、
入れると負荷が高まるというトレードオフをどう克服するか
楽しみに待っていますよ
750動け動けウゴウゴ2ちゃんねる:04/04/07 11:29 ID:YsHv4Vrt
書き込みデーモンの話題とか見ると、去年の暮れから話がループしているな。

実際のコードを書くためには、bbs.cgiをサブルーチン単位で公開できるところだけでも提示してくれないと書けないと思う。
どうなんですか? root★氏やひろゆき氏的にそのあたりの書き込みサブルーチン公開は?
751動け動けウゴウゴ2ちゃんねる:04/04/07 11:59 ID:LZTAF/WX
>>750
それこそ既出だと思うが?
752▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/07 15:13 ID:FI0IMxS5
753750:04/04/08 04:30 ID:p5k2zZLN
>>751
んー、だから鶏と卵問題で前進していないから、いいかげん最初の一歩を踏み出しましょうということで。
wikiに公開できる部分を張ってもらうのがいいと思う。

まあ予想されるひろゆき氏の答えは「どの部分を非公開にしなくちゃいけないかも分からない」だったりして。
754動け動けウゴウゴ2ちゃんねる:04/04/08 16:15 ID:+Dfkkpu/
>>753
その程度もわからないのだったら、いっその事c化しても問題なさそうだな(w
755動け動けウゴウゴ2ちゃんねる:04/04/08 22:27 ID:8XFkjoS7
で、ひ(りゃはPerlは読み書きできるのか?
756▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/11 13:43 ID:w04KJDq1
>>755
みたいですよ。
もっとも、公式見解が聞きたいところだけどw
757動け動けウゴウゴ2ちゃんねる:04/04/11 16:45 ID:/FfzeSTq
このスレは
http://pc5.2ch.net/test/read.cgi/php/1019171453/
との連携をしているんですか?

向こうではC中心のようですが。
758見習い▲ ★:04/04/11 17:14 ID:???
さみだれフォーメイションだったかな?
759▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/04/11 17:19 ID:w04KJDq1
>>757
一応連携しているはず、と信じたい。

見習い師いわく、「bbs.cgiは完全な挙動をしている」。
しかしながら、

・perlccの吐くCソースとバイナリが大きいのでシェイプアップの余地がある。
・スパゲティソースであることが過去の議論から明白なので、
 処理過程も見直せば大幅な負荷軽減が期待できる。
・ディスクI/Oまわりの見直しでディスク負荷が軽減可能。
 今のソースはコストのかかるfopen()コールが不必要に多い模様。

などの理由から、私はCでやれるんならそうしたほうがいいんじゃない?という意見。
760動け動けウゴウゴ2ちゃんねる:04/04/11 17:59 ID:TcI1WiXj
結局1から作り直すことも出来ず
ソースを全部公開することも出来ず
一部分を公開して→直すの繰り返しで
スパゲティ状態を直すことも出来ず
これじゃとても再開発とは呼べない気がします
と禿外な事言ってみる
761動け動けウゴウゴ2ちゃんねる:04/04/11 18:18 ID:dyGNS2qb
運営が欲しいのは
沢山のプログラマーではなく一人の天才プログラマー
762動け動けウゴウゴ2ちゃんねる:04/04/11 18:36 ID:nLKXeJGj
(o ̄ー ̄)ノ                                  < タクシー
763動け動けウゴウゴ2ちゃんねる:04/04/11 18:39 ID:C+OO/ibD
とりあえず
use warnings;
use strict;

つけて動くようになったら
mod_perl化…
764動け動けウゴウゴ2ちゃんねる:04/04/11 20:15 ID:SiBXMy6p
じゃあ、オブジェクト指向で書き直してみるとかw
以後、部分公開も楽になるかな
765FOX ★:04/04/13 15:57 ID:???
サザン★さん お呼び出しです

F22 で proxy999 を取っていると思いますが
全く同じルートで proxy998 も取ってください。

各サーバが BBQ の proxy998 も取りに行きます。
766サザン ★:04/04/13 21:58 ID:???
>>765
かんりょうでーす

999 と同じ場所に 998 がおいてありますー
767FOX ★:04/04/13 21:59 ID:???
>>766
どもども

中身はなにもしなくていいですー
たぶんなにもしていないとおもうけど
768サザン ★:04/04/13 22:05 ID:???
>>767
コメント部分のみ除いてますー
769FOX ★:04/04/13 22:06 ID:???
はいー
770動け動けウゴウゴ2ちゃんねる:04/04/13 23:19 ID:wHXb7vPS
某ぶぇらさんみたいな喋り口の人が来て、改造案で気を吐いていますね
ここじゃ押してばっかりだと、オシモドサレマスヨーヾ('-')ノ
771FOX ★:04/04/14 00:47 ID:???
for some reason

bbs.cgi を更新したので peko サーバよろしくー > root★さん
772root ★:04/04/14 01:14 ID:???
>>771
live8/9/10/news11 done.
773FOX ★:04/04/14 01:36 ID:???
>>768
あうーん
やっぱりあちこち欠けて(編集されて)配られるので
F22(各サーバ)が直接 qb4 の 998 を見るようにしました。
ということで、 bbq 側(f22本体)からは 998 はずしてくださいー
774FOX ★:04/04/14 01:37 ID:???
>>772
どもです

これで ほとんど bbs.cgi を更新しなくても済むようになりました。
775ゆうゆう ◆garnetGnNk :04/04/14 06:05 ID:154T0ZtH
>729
そんなしょぼいコードを参考にしたら2ちゃんねるは壊滅しますよ、と。
776サザン ★:04/04/14 21:35 ID:???
>>773
ほいですー
777コナン ◆KONAN/fu2I :04/04/15 19:28 ID:CjssFFdw
777ゲトー! (・∀・)ニヤニヤ
778はりねずみ ◆HaRinezUmI :04/04/25 00:51 ID:3knUyGrT
GoogleもUTF-8が標準になったことだし2ちゃんねるも
ログとかhtmlとかUTF-8にしてみましょうYO!

別にメリット無いっすね…(´・ω・`)
779動け動けウゴウゴ2ちゃんねる:04/04/25 23:08 ID:c/DIZBZT
別に無い事もないけどUTF8への変換ってコストかかるしやめといた方が良いんでは。
あとサイズもでかくなるような。
780動け動けウゴウゴ2ちゃんねる:04/04/26 03:46 ID:nnKIBKmY
2chブラが全部作り直しですよ
もしShift_JISのログとUTF-8のログが混じるとその判別も必要になるし
781動け動けウゴウゴ2ちゃんねる:04/04/26 14:53 ID:vp95Z360
メリットが無いどころかデメリットが特盛りなのだった
782動け動けウゴウゴ2ちゃんねる:04/05/01 01:41 ID:u0cn/VMi
3バイトUnicodeまで待て
783動け動けウゴウゴ2ちゃんねる:04/05/01 01:47 ID:Ch56kdFm
そいやスクリプト側でわざと負荷かけてディスクI/Oの負荷を減らそうって話が
途中出てなかったっけか。
784動け動けウゴウゴ2ちゃんねる:04/05/02 23:41 ID:KZihMS4e
Unicodeは好きになれない。
でも、そこに未来があるのは否めない。
785▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/08 10:01 ID:NCSGATwU
こちらへも。
【Project peko】2ch特化型サーバ構築作戦 Part11
http://qb3.2ch.net/test/read.cgi/operate/1082990543/800-807

800 :root ★:04/05/08 02:29 ID:???
で、ここの過去スレでも書きましたが、どうもbbs.cgiはたまに暴走することがあるので
(FreeBSDだけじゃなくてLinuxなマシンでも見たことあり、理由は不明)、
何か対策をする必要がある予感がします。

なおuma/pekoサーバでも以前からこの症状起こっているので、

(以下略)
786ピロリ:04/05/08 22:33 ID:WjDFAjOs
サザン★さんに質問でーす

qb2 にある板は他の板との共存は可能ですか?
つまり何を目論んでいるかというと

BBQ , qb2 ,qb3 qb4 等を一台のサーバでまかなおうと、

BBQ , qb5(qb2+qb3) qb6(qb4) ってな感じで、
787動け動けウゴウゴ2ちゃんねる:04/05/09 00:16 ID:gJuMGeKB
初めて書き込みするのでこっそり怖がりながら書き込みます。

# 某所で鯖管理をやっていた関係でつい提案したくなってしまって。

2chのサーバはなんとなくホストによって板が分割されていますが
実際には一つのホスト名で、全すれが運用できるように思えます。

たとえば、

+--------------+    +---------+     
|           |     |       |     
| 負荷分散装置 |------| L3switch |------- ....多数のread.cgiサーバ(Apache)
|  (LVS) .    |     |       |
+--------------+    +---------+
                   |
                   |
                +------------------+
                | Cluster NFSサーバ |
                | OpenAFS・Coda   |
                | もしくはRawDB関係 |(もちろんこれも多数)
                +-----------------+

・LVS-DR(Linux Virtual Server Direct Routing)構成でL3switchにデータ負荷分散を
 行い
・dat関係は、ClusterNFSもしくはOpenAFS、Codaを利用して分散ファイルシステム化
 もしくは、データベースを利用してHDDアクセスの効率化。
・データベースもPostgreSQL系であれば(最近MySQLもそうかな)、負荷分散構成をくめたと
 思います。
・すべての書き込みは負荷分散装置を利用すること。

このようになると、ハードディスクのアクセス速度が落ちると思われるようですが、
実際にはIDEのサーバであれば一般的なL3スイッチの処理速度以上に処理を行うなんてこととは
難しいようですし(というよりプログラムの効率あげないと無理)。

などというのはどうでしょうか? 詳しく構成をくむ必要があればもう少し考えますが・・・。
788 ◆MUMUMUhnYI :04/05/09 01:39 ID:3cazUvGC
>>786
このへんは、何度となく提案されてますね。

たぶん、「お、こりゃいいかも」と思えるような*具体的な*システム構成
(>>787のような概念図レベルではなくて)を提案できるとよいのかも。

特に管理人が納得できるようなのだと、より望ましい気がするです。
789 ◆MUMUMUhnYI :04/05/09 01:39 ID:3cazUvGC
>>788
あ、レス番号間違えた。両方とも>>787で。
790 ◆F6an1MWJ7o :04/05/09 02:10 ID:SnK5lo91
板移転がうざいと言う人が少なからずいるわけで(これが原因でメインをギコナビへ移行中)
p://鯖名.2ch.net/板名/〜ではなく
p://板名.2ch.net/板名/〜にした方がいい感じ

板移転した場合はDNS側でIP(鯖)変更する
791動け動けウゴウゴ2ちゃんねる:04/05/09 02:11 ID:JJgF7R6d
>>790
( ゚д゚)ポカーン
792 ◆F6an1MWJ7o :04/05/09 02:24 ID:SnK5lo91
>>791
D:\katjusha_2ch\log\pc2.2ch.net\mysv\
D:\katjusha_2ch\log\pc5.2ch.net\mysv\

D:\gikoNavi\Log\2ch\mysv\

D:\jane\log\ネット関連\mysv\
*janeは多言語環境の場合(削除不可能な)文字化けフォルダを作る為論外

何か?
793▲ 某ソレ511:04/05/09 02:25 ID:P1CnVYGu
( ゚д゚)ポカーン
794動け動けウゴウゴ2ちゃんねる:04/05/09 02:27 ID:fUCJr0rx
DNSはたーん
795 ◆F6an1MWJ7o :04/05/09 02:53 ID:SnK5lo91
>>794
なじぇ〜?

と聞くのはやめよう
なんとなく分かった

それなら
www.2ch.net の鯖を大量に作る
*download.windowsupdate.com をnslookupして下さい
これが外部と接続できる鯖
リダイレクトで内部鯖の内容を返す
www.2ch.net/sec2ch/ => qb3.2ch.net/sec2ch/の内容を出す
www.2ch.net/mysv/ => pc5.2ch.net/mysv/の内容を出す
この時qb3.2ch.net・pc5.2ch.netは外部から直接の接続不可
796動け動けウゴウゴ2ちゃんねる:04/05/09 03:20 ID:nvB8Z7jK
( ゚д゚)ポカーン
( ゚Д゚)ポカーン

鯖分割するいみないじゃん。
798動け動けウゴウゴ2ちゃんねる:04/05/09 06:25 ID:L0BxXxBj
そのためのL3switchなわけだが
799動け動けウゴウゴ2ちゃんねる:04/05/09 08:08 ID:qyIFyEc5
>>795
なんかメリットあんの?
800動け動けウゴウゴ2ちゃんねる:04/05/09 08:19 ID:fUCJr0rx
>>799

>板移転がうざいと言う人が少なからずいるわけで(これが原因でメインをギコナビへ移行中)
これでしょ。負荷分散の考えとは別かと
801 :04/05/09 08:47 ID:yaHv/z05
確かにユーザとしては板移転への対応はわずらわしい。
板移転はユーザの手間を考えると、管理側としてもおいそれとは
できないんじゃないかな。

DNS 使えば解決できるよね。
802▲ 某ソレ511:04/05/09 09:25 ID:P1CnVYGu
かちゅーしゃのために2chが存在するのかよ、という話ですな、、
>>790 >>792 これじゃあ反感もたれてもしゃあない。>>787とは別の話ですよ、
803▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/09 10:01 ID:ktJoDjUM
>>787
これをやろうとすると2chの現状のアーキを相当いじくらないといけない予感。
804動け動けウゴウゴ2ちゃんねる:04/05/09 10:26 ID:UjyonFKI
bbs.cgiの話じゃないな。
批判要望板にでもスレ立ててね。
805787:04/05/09 11:38 ID:gJuMGeKB

意見ありがとうございます。

そですね、もう少し具体的な案にしてから持ち寄りたいかなと思います。
私が一番メリットとしたいのは、負荷分散装置を介することによって、
プログラム的には一つのホストに対しての書き込みを行うのみ(クッキーとかありゃあしますが・・・)
を行うように見せるだけでよく、言ってみればread.cgiやbbs.cgiを
すべてシングルソース化が行うことができるように思えます。

つまり、多数のサーバ環境を考えるのではなくて、
一つのソースコード(実行ファイル)が複数のホストにコピーされているだけで
2chの運営が行えればいいかなと。

そうなれば、削除人分担とかサーバ管理分担とかすごく楽になると思います。
機能的には、HTTPサーバとファイルサーバ(DB?)の二つになるだけですから。

あと、負荷分散機にかかる負荷はほとんど無いと思ってください。
実際テストしている環境の中では、6000セッションを行った場合でも
負荷率は0.00でした。平均アクティブセッションはだいたい300を越えることもあまり無かったですが。

えーとというわけなんですが、スレをたてるほど意見も固まっていないので
いちど意見が固まってからもう一度投稿します。
そのときにスレたての話と言うことで・・・・。
806787:04/05/09 11:41 ID:gJuMGeKB
あと、どうせアーキテクチャとインフラ周りをいじるなら
可能な限り現状を無視しつつ、可能な限り互換性(データぐらい?)を
取ろうぜというのが方針だったりもします。

どうせなら早く・管理楽のほうがあとあといいもーんといい感じです。
ではでは。
807▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/09 11:44 ID:ktJoDjUM
787氏

とりあえず2chのデータまわりで一番重要なのがdatの互換性ですからね。
そのあたりさえどうにかなれば後はいかにして負荷を減らすかという問題になりますから。

直接メールであなたの提案を総帥に伝えたほうがいいかも。
808787:04/05/09 12:05 ID:gJuMGeKB
どうもです。

>> ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo さん

いやぁ、そこまで行くようなものでは・・・。
本気でやるなら死ぬほど本気でやりますが、
まだそこまでのこととは思っていませんので。

今のところせいぜい土日の暇つぶし程度のものです。
それに現状がよくわかっていない中で特攻かけてもこわいし。

あと、アーキテクチャとネットワーク周りについてですが
たぶんデータ周りについての互換性保証はまぁー時と場合によるかと。
面倒ならば、分散ファイルシステムで共有フォルダでも作った方が早いし、
データベースの限界を試すのなら、データベースを作った方がいいし。
その辺はもう少し2chのサーバ現状知ってからかなぁと。

ではでは。
809▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/09 14:42 ID:ktJoDjUM
SFでも取り組みがあるみたいです。

apache_modと通常バイナリとどっちが早いんだろ。

http://sourceforge.jp/projects/mod-bbs/
810動け動けウゴウゴ2ちゃんねる:04/05/09 17:17 ID:CRKWv/5c
he.netのスイッチの帯域問題について検索したか?

L3バランサーの超具体的な設定法(confファイルをそのままソースで貼るぐらいのレベル)

このあたりを解決して提案するのはいかがだろうか?
811▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/09 17:22 ID:ktJoDjUM
だんだん関係ない方向に言っているような悪寒

>>810
見習い師いわく、「8月までにheからは撤退」だそうで。
812サザン ★:04/05/09 18:05 ID:???
>>786
削除系の板(saku、saku2ch)とそれ以外の普通の板を同じサーバ置くってことですかー?
813動け動けウゴウゴ2ちゃんねる:04/05/09 18:05 ID:qWMWh6yB
sakud は 廃止?
814ピロリ:04/05/09 18:36 ID:fxy1sLJ/
>>812

qb5 = qb2 + qb3 をやろうかなって思っているけど
ちゃんと動くかな? が知りたいのです
815動け動けウゴウゴ2ちゃんねる:04/05/09 18:58 ID:RTc4CuFE
qb2 削除要請/削除整理/削除議論
qb3 運用情報/規制情報/規制議論
がqb5配下に集約するわけですね。
816サザン ★:04/05/09 21:12 ID:???
>>814
qb2 の bbs.cgi は他のサーバと統一しているので、いけるはずですー
そのサーバには sakubbs.cgi 入れないといけないですけど、
817ピロリ:04/05/09 21:12 ID:fxy1sLJ/
りょうかいですー >>816
818動け動けウゴウゴ2ちゃんねる:04/05/09 21:57 ID:yksp9KtL
>>809
誰がやってるのかと思ったら本7でワロタ
819動け動けウゴウゴ2ちゃんねる:04/05/09 22:33 ID:yksp9KtL
>>740
利用者を(見かけ上)待たせない小技。
処理の最初で標準出力と標準エラー出力を閉じると
利用者のブラウザには結果がすぐに表示される。(htttpd依存?)
成否が分からないのが難点ですが...
-----------------
#!/usr/bin/perl

print "Content-Type: text/html; charset=shift_jis\n\n";
print "処理を受け付けました";
close STDOUT;
close STDERR;
# 時間の掛かる処理

820動け動けウゴウゴ2ちゃんねる:04/05/10 02:58 ID:piZUp38e
>>816-817
doronpo.cgiも入れてくださいね。。。。
821ひろゆき@どうやら管理人 ★:04/05/12 17:37 ID:???
>>819
書き込み後にウエイトを置いてるように、
利用者をわざと待たせるようにしていたり、、、
>最近のbbs.cgi
822動け動けウゴウゴ2ちゃんねる:04/05/12 17:48 ID:6FcSbOY+
>>821
途中経過を表示させるってのはいかが?

アクセス規制チェック中。。。 OK
連投規制チェック。。。 OK
ごにょごにょチェック中。。。 NG
ERROR!
お布団干したままですよ( ̄ー ̄)ニヤリッ

みたいな。
823ひろゆき@どうやら管理人 ★:04/05/12 17:50 ID:???
途中経過を表示することになんか意味あるのかなぁ、、、
824動け動けウゴウゴ2ちゃんねる:04/05/12 17:51 ID:G8NfKboK
>>822
エラーメッセージ全部で何種類あるんだ…
825動け動けウゴウゴ2ちゃんねる:04/05/12 17:56 ID:6FcSbOY+
>>823
リロード抑止にならないかなって。
何も表示されることなくただ待たされるとなると F5 押したくなるっていうのが一般的心理かと。
826動け動けウゴウゴ2ちゃんねる:04/05/12 18:07 ID:6FcSbOY+
あと蛇足になるんだけれども、書き込み後の自動ジャンプは切れないかな?
わざわざ100KB以上もある板トップに強制移動したところで無駄な転送が発生するし、
誰もが板トップに戻ることを期待していない(書き込み元のスレッドに戻りたい場合もある)かもしれないし。

板トップの広告に関しては、「書きこみました」画面に入れてもいいんじゃないかな?
827▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/05/12 18:23 ID:1zJCvsBa
それだったら

「書き込み処理しています、しばしお待ちください。。。」

(エラーならここで表示)

(処理が終わった)

「終わりました。5秒後にトップページへ飛びます」

(直後にmetaタグを仕込む)

(終わり)

でいいような気がしますが。>提案者&総帥
828ピロリ:04/05/12 18:32 ID:Co1qIlT3
「歯みがいたか?」

「宿題やったか?」

「風呂はいったか?」

「妹の様子はどうだい?」

「肛門の調子はどうよ?」

でいいような気がしますが。
829動け動けウゴウゴ2ちゃんねる:04/05/12 18:37 ID:IyLVPEHv
ボクの肛門も閉鎖され(ry
830 ◆f0.zuburi6 :04/05/12 19:05 ID:s/b9IZ17
肛門は晴れ 所により一時血が出るでしょう
831動け動けウゴウゴ2ちゃんねる:04/05/12 19:46 ID:19cVtAzd
>>825
少しくらい表示してもイイが、ひろゆきの嫌いな広告スクリプトにも情報を提供することになるわけで。
8327M. ◆dq7M./4Uw. :04/05/12 22:40 ID:mghzDR5j
自動じゃんぷきれー、
っつのは前からさんざんがいしゅつきしゅつだった希ガス元素。
833動け動けウゴウゴ2ちゃんねる:04/05/13 02:33 ID:N90mjkQ6
本題とは逸れるが自動ジャンプなんて要らないと思う。

-------------------------
書き込みが終了しました。

・○○板(リンク)
・にちゃんねる(リンク)

-------------------------

これくらいで良いっしょ。
834動け動けウゴウゴ2ちゃんねる:04/05/13 02:38 ID:3Kass86c
>>825
2ちゃんブラウザーには効かないぜ
書き込みウィンドウが固まって本体まで固まる奴があるからイライラするだけさ
835nobody:04/05/16 18:42 ID:iQGerbOS
>805
そこそこ使えるL4 ロードバランサって300万円ぐらいするよね、Alteonとか
F5とかServer Ironとか。

それを海の向こうに設置して運営するコストは馬鹿にならんと思う。
このての保守契約は24h365dayにすると極端に高くなるから
836787:04/05/17 23:48 ID:xGAOnJKQ
負荷分散機のパフォーマンス調査を行っていました。
むちゃくちゃ返信遅れていますし、ややスレ違いな場所に返信してごめんなさい。
・・・そろそろスレたてた方がいいのかな・・。

>835

そうなんですよね。高すぎるんですよ。
ただいま、負荷分散機のパフォーマンス調査を行っているんですが、
やたらと古いデータしかないんですよね・・・。

ttp://www.veritest.com/clients/reports/f5/layer4_layer7_comparison.pdf
ttp://www.linuxvirtualserver.org/Joseph.Mack/performance/single_realserver_performance.html

やっぱりソフトウェアベースでは無理かなぁ。
となると一度実験してみないとだめかも、どこかでこっそりとやってこよう。
837動け動けウゴウゴ2ちゃんねる:04/05/18 00:23 ID:OxtL7ohg
838とんすけ ◆MytskeE.Vg :04/05/21 12:47 ID:psZQ4yMs
こっちにも関りがあることなのでコピペ。

22 :動け動けウゴウゴ2ちゃんねる :04/05/21 10:54 ID:/Wl6bf1i
AirH"PHONEセンター特認IPアドレス帯域追加おながいします

AirH"PHONEセンターIPアドレス帯域
http://www.ddipocket.co.jp/p_s/products/airh_phone/ip.html
61.198.167.0/24
61.198.253.128/25
追加

839動け動けウゴウゴ2ちゃんねる:04/05/24 00:47 ID:STwP5Nt1
840動け動けウゴウゴ2ちゃんねる:04/05/26 22:39 ID:lLrBTJ+c
>>827
seikou=0
sippai=1
era=1
if(kakikomi=0)
{
mes "書き込み処理しています、しばしお待ち下さい。。。"
seikou=seikou+1
}
elseif
{
mes "エラーですよん。。。( ̄ー ̄)ニヤリ"
}
if(seikou=2)
{
wait 500
mes "終わりました。五秒後にトップページへ飛びます。"
goto *top
}
stop
841動け動けウゴウゴ2ちゃんねる:04/05/27 23:30 ID:6Yr/+iFH
119 名前:サザン ★ 投稿日:04/05/27 23:15 ID:???
むぅ

bbq.2ch.net
148 processes: 1 running, 147 sleeping

120 名前:動け動けウゴウゴ2ちゃんねる メェル:sage 投稿日:04/05/27 23:15 ID:ThpJLAhB
C:\WINDOWS\デスクトップ>ping bbq.2ch.net

Pinging bbq.2ch.net [206.223.147.35] with 32 bytes of data:

Reply from 206.223.147.35: bytes=32 time=118ms TTL=46
Reply from 206.223.147.35: bytes=32 time=119ms TTL=46
Reply from 206.223.147.35: bytes=32 time=120ms TTL=46
Reply from 206.223.147.35: bytes=32 time=137ms TTL=46

Ping statistics for 206.223.147.35:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 118ms, Maximum = 137ms, Average = 123ms
?

121 名前:南アルプス ◆28UfbftxkA  投稿日:04/05/27 23:16 ID:AFwyjLAs
>>119
それは直ってないとの見解で宜しいでしょうか?


123 名前: ◆f0.zuburi6  メェル:sage 投稿日:04/05/27 23:17 ID:Wg2kMH9n
>>119
一度に一個しかプロセスが走らない?

124 名前:動け動けウゴウゴ2ちゃんねる メェル:sage 投稿日:04/05/27 23:18 ID:K2FslckF
BBQが止まったなら、、、(ry

125 名前:未承諾広告 ◆TWARamEjuA  メェル:sage 投稿日:04/05/27 23:19 ID:JtwbarS8
>>119
media: Ethernet 10baseT/UTP <full-duplex>
これってまずくないですかねぇ(汗)

127 名前: ◆Reffi/bQ.c  メェル:sage 投稿日:04/05/27 23:21 ID:nGsxpDn8
>125
あ〜ひゃひゃひゃ
それじゃぁ、めちゃくちゃ重くて当たり前のような(滝汗

128 名前:動け動けウゴウゴ2ちゃんねる メェル:sage 投稿日:04/05/27 23:22 ID:l+Xr0uKn
なんでmulch-proccessingができないんかな・・・。<bbq
rootさんはいないのかな。
842動け動けウゴウゴ2ちゃんねる:04/05/31 23:29 ID:bs05VOav
超カメレスで悪いが、随分前にあった「IO::File使え」という意見。
IO::FileをuseするとIO::SeekableだのFile::Specだの余計なモジュールを
中で読みまくるので、激しく重くなるよ。

open my $fh, '<', './unko.txt';
...
close $fh;

オブジェクト指向でファイル操作するのは諦めて、こうやった方が軽い。
843動け動けウゴウゴ2ちゃんねる:04/06/01 04:02 ID:UitYeJYN
それ以前に、mod_perlしていなけりゃ起動コストがアホみたいにかかる
844動け動けウゴウゴ2ちゃんねる:04/06/01 22:00 ID:YAEmiTro
>>843
mod_perlはhttpdプロセス一つごとにcgiが起動するからメモリ食う。
FastCGIの方がいいよ。
845動け動けウゴウゴ2ちゃんねる:04/06/02 03:24 ID:vuIr/nLK
保守
846動け動けウゴウゴ2ちゃんねる:04/06/02 07:00 ID:g/lHGssg
>>844
read.cgi以外の*.cgiを処理するmod_perl有効のhttpdと。
*.gif|*.htmlなどの固定ファイル専用のSTATICビルドしたhttpd。
その二つを別ポートもしくはaliasした別IPで立ち上げて。
poundで分岐するってのはどうだ?
847mod_perl:04/06/02 09:46 ID:qSUlVdsV
おそらく>>844は理解できていないか失敗した厨房
Apache拡張ガイドでも嫁

>>846
2chにそのような運用を期待するのは浅はかだと思わんかね
848動け動けウゴウゴ2ちゃんねる:04/06/02 13:03 ID:j+uMUo52
そもそも、httpd数とプロセス(コネクション)数は1対1にする必要ないんだけどね。
httpdが数百個も動いてメモリが気になるなら、マルチスレッドで動かせばいいだけでしょ。
apache2を使っているんだから。
849動け動けウゴウゴ2ちゃんねる:04/06/03 12:54 ID:6tmZQ3gf
>>848
MPM workerで安定動作しているところってどこか知ってる?
ヤフーとかgoogleとかはどうなんだろうなぁ。
850たつ ◆1qlFf1VE/. :04/06/04 18:22 ID:BOSVdGMa
質雑スレよりスレ建て規制関連のソース転載しますね。

転載元
http://news12.2ch.net/test/read.cgi/news/1086870795/

my $ripfile = $PATH . "内緒";
my (@IP, @IIP, $TIP);


if($FORM{'subject'} ne ""){

#スレッド立てすぎチェック
my (@IP, @IIP, @ZIP, $TIP, $VIP, $SIP, $JIP, $HIP);

$TIP = $HOST;
$TIP =~ s/<(.*)>//g;
$VIP = $TIP;

if($FLAG == 5){
$TIP = $FORM{'sid'};
$TIP =~ s/\W/\\$&/g;
}else{
my @ippart = split(/\./, $TIP);
$JIP = $ippart[0];
if($TIP !~ /[a-zA-Z]/o){
$TIP =~ s/[0-9]+$//o;
$TIP = "^" . $TIP;
}elsif($JIP =~ /[x\-\.\d]{12}/o){
$TIP =~ s/([x\-\.\d]{5})([x\-\.\d]*)/$1\.\*/o;
}elsif($JIP =~ /\d{8}/o){
$TIP =~ s/(\d{3})(\d*)/$1\.\*/o;
}else{
if(@ippart < 5){
$TIP =~ s/\d+/\.\*/g;
}else{
if(($ippart[@ippart-6] =~ tr/\d/$&/) > 4){
$TIP = $ippart[@ippart-6];
$TIP =~ s/\d.*/\.\*/g;
}else{
$TIP = "";
}
$TIP .= "$ippart[@ippart-5].$ippart[@ippart-4]";
$TIP =~ s/\d+/\.\*/g;
$TIP .= ".$ippart[@ippart-3].$ippart[@ippart-2].$ippart[@ippart-1]";
}
}
$HIP = "$ippart[@ippart-3].$ippart[@ippart-2].$ippart[@ippart-1]";
}
# 書き込みログファイル
open(RIP,"<$ripfile");
@ZIP = <RIP>;
close(RIP);
# 書き込みホスト保存
open(WIP,">$ripfile");
#flock(WIP,2);
print WIP ("$HOST,$FORM{'sid'},$FORM{'key'}\n", @ZIP)[0..$SETTING{'BBS_THREAD_TATESUGI'}-1];
close(WIP);

}
8557M.@ j179136.ap.plala.or.jp ◆dq7M./4Uw. :04/06/11 18:03 ID:YUq2wQsC
RIPファイル内緒って。。。(汗
普通に知られてると思うんだけどな。。。(汗
856動け動けウゴウゴ2ちゃんねる:04/06/11 22:00 ID:2qpKDhau
>>853であれこれやってるものが>>854のどこにも使われてないように
見えるんだが
857動け動けウゴウゴ2ちゃんねる:04/06/12 14:14 ID:c+x+USDx
こっちでやってるのか
欠けてるコードも補完されてた
http://qb5.2ch.net/test/read.cgi/operate/1086942520/l50
858動け動けウゴウゴ2ちゃんねる:04/06/12 14:58 ID:8VflbAB0
あげとく
8597M. ◆dq7M./4Uw. :04/06/12 17:23 ID:O0ZFAfUU
>856
なんか他の色々なところに使ってて、
すれたて規制には使ってないらしらし、
860動け動けウゴウゴ2ちゃんねる:04/06/12 17:28 ID:Cfpi0Eq0
112 名前:FOX ★[] 投稿日:04/06/12(土) 17:25 ID:???
bbs.cgi に入れることに成功した

んじゃ 実際に呼んでみよう。。。
861動け動けウゴウゴ2ちゃんねる:04/07/07 18:38 ID:o8lB/EVs
もう開発しないのか?
862動け動けウゴウゴ2ちゃんねる:04/07/09 16:34 ID:xo7Sweag
cgi以外に、通常ブラウザを制御できるプログラムはないのですか?
863動け動けウゴウゴ2ちゃんねる:04/07/09 16:37 ID:qeTzhCtY
>>862

どうぞこちらへ

WEBプログラミング@2ch掲示板
http://pc5.2ch.net/php/

サーバーサイドプログラミング関連の話題を扱っています。

Perl, PHP, Java, Ruby, C, Tcl といった言語処理系の話、
Apache, CGI, JSP/Servlet, ASP, ColdFusion といったアプリケーション実行環境の話、
Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。

スレタイトルは言語がハッキリわかるようにしてください。(言語を特定する場合)
配布中止/配布元不明スクリプトが欲しい人はダウンロード板へ
JavaScript、VBScript等クライアントサイドの話題はWeb製作板へ
864動け動けウゴウゴ2ちゃんねる:04/07/09 16:40 ID:xo7Sweag
>>863
板違い失礼。
ありがとねんノ
865 :04/07/11 03:05 ID:g55t+9Ba
test
866動け動けウゴウゴ2ちゃんねる:04/07/23 02:20 ID:8GJdzZI2
で、質雑スレで bbs.cgi が云々と宣ってた香具師はどうした?(哀)
867本7:04/07/24 10:41 ID:j1AbFFVk
Apacheモジュールのmod__bbsならあるけど2chで使うにはコアすぎるかな?
868本7:04/07/24 11:51 ID:j1AbFFVk
てか新bbs.cgiってもう完成したんだっけ?
869動け動けウゴウゴ2ちゃんねる:04/08/07 16:35 ID:+FhTqV9+
NGワードのことだけんども

"&r"を削除するんでなくて、"&amp;r"に変えるようにできないかな。
現状の抜け穴対策と、通常の投稿として"&r"がある時の救済策。

スレッドタイトルのNGワードも同様の処理にして欲しい。
現在の、"&"を全て削除する方法では誤爆が多すぎる。
870動け動けウゴウゴ2ちゃんねる:04/08/08 20:02 ID:nTi3CZqs
それは専ブラじゃないか
871動け動けウゴウゴ2ちゃんねる:04/08/08 20:06 ID:A6+c/0Ld
1行目しか読んでない悪寒
872動け動けウゴウゴ2ちゃんねる:04/08/08 20:56 ID:GsL2iQKg
一応書いとくと、bbs.cgiにもNGワードがございまして、
特定の文字列があると投稿できなかったり、或いは
別の文字列に変えられたり、削除されたりするのですね。
873ここ→←重ねて→&r←:04/08/09 01:11 ID:HNwwfeok
&rが削除されるのは、名前欄だけじゃないのか?
ここに→&r←来た
874動け動けウゴウゴ2ちゃんねる:04/08/09 09:25 ID:L7UYaoY0
そだよ
875保守:04/08/12 11:50 ID:ZidxCuc8
保守
876動け動けウゴウゴ2ちゃんねる:04/09/02 11:37 ID:VSrCQeoZ

877動け動けウゴウゴ2ちゃんねる:04/09/06 10:38 ID:LPdsoeYd
878動け動けウゴウゴ2ちゃんねる:04/09/06 19:37 ID:/C2k9wTD
2chブラウザ使えや
879動け動けウゴウゴ2ちゃんねる:04/09/06 19:43 ID:szIUr1kJ
bbs.cgiがdatに記録するのは素のURLで
リンクにしてるのはread.cgi(or専用ブラウザ)ですね
880動け動けウゴウゴ2ちゃんねる:04/09/06 20:05 ID:nFcHlILR
>>879
そういうことでっす
881 :04/09/17 13:41:16 ID:I3k6ObmZ

882Giraffes ◆uHAyZd8FGA :04/09/23 21:42:07 ID:tCfWkHg0
bbs.cgiが処理するvalue値、形式は何なんでしょか?
<input type=hidden name=time value=1095940962>

初歩的な質問ですみませんが、どなたか <(_)>
883動け動けウゴウゴ2ちゃんねる:04/09/23 22:00:32 ID:Rd0mgR11
timeはUnix時間だったっけ?
884882:04/09/24 08:49:47 ID:QH62aZR5
ですね (_)m
885 :04/10/13 14:31:35 ID:topL7/m/
.
886動け動けウゴウゴ2ちゃんねる :04/10/13 23:24:23 ID:Nz0AON1Z
スレ一覧生成するときに、1行1スレにして、可読性を高めることはできますか?
887t040086.ipgw.phs.yoyogi.mopera.ne.jp ◆arc/U573Xw :04/10/14 09:03:00 ID:gJ4mn6kL
専用ブラウザを使う。
888動け動けウゴウゴ2ちゃんねる:04/10/24 09:55:15 ID:SLK0YXuC
ソースきたないなぁ>>852-854
これはメモリをいっぱい使う典型的な例じゃない?
889動け動けウゴウゴ2ちゃんねる:04/10/28 11:13:05 ID:2O4mPvM0
Perlわからんのに下手なことやる★がいるからな。
2chにワケワカランおまけ機能つける奴とか
890動け動けウゴウゴ2ちゃんねる:04/10/28 18:51:11 ID:anlG9U+J
それで負荷がどうのこうの言って制限とかやめてよ
先にやることあるでしょ
891動け動けウゴウゴ2ちゃんねる:04/10/28 20:29:43 ID:arV63oCy
それがわかるぐらいならこんなことになっていない
892動け動けウゴウゴ2ちゃんねる:04/11/05 00:27:14 ID:fIHc0x17
思ったんだがPerl使うより
サーバサイドJAVA使ったほうが比較処理早いと思うんだが・・・
893動け動けウゴウゴ2ちゃんねる:04/11/05 03:31:29 ID:0hLvehPf
誰が組むの?
894動け動けウゴウゴ2ちゃんねる:04/11/05 03:32:15 ID:Q0Ll4shF
オレオレ
895動け動けウゴウゴ2ちゃんねる:04/11/05 04:35:16 ID:/XP1jvbw
ひろしかい?
896動け動けウゴウゴ2ちゃんねる:04/11/05 10:59:40 ID:R5u39dy/
やっぱりバイナリ(C/C++)でしょう
897動け動けウゴウゴ2ちゃんねる:04/11/05 20:50:15 ID:J43AHOGt
とりあえずさ、どう考えても今のやつに手を加えるのが現実的ではないだろうか
誰か有能な人を雇用してよ。
俺とか。
898動け動けウゴウゴ2ちゃんねる:04/11/05 20:51:54 ID:GKffWgut
その謳い文句のままIT企業に売り込んでみれば?
899動け動けウゴウゴ2ちゃんねる:04/11/06 09:19:21 ID:zGCPlBxu
bbs.cgi開発【WebProg板】
http://pc2.2ch.net/test/read.cgi/php/1019171453/l50

開発ストップ中
900root▲ ★:04/11/06 09:52:53 ID:???
不動楽さんが手を入れて、明らかに板飛びが減ったですね。
901通りすがりのUNIX屋:04/11/07 10:01:10 ID:mqnEPazJ
共有メモリ使ってはいかがですか?
共有メモリ上にスレッド毎のメッセージ数入れておいて、共有メモリを更新する数msecだけ
SYSVセマフォ(若しくはPOSIXのセマフォ)で排他。
1000を多少越えても良いのだから参照に排他は不要。
SYSV共有メモリで足りなければmmapの共有メモリで。

処理フロー
1.規制確認
2.レス数確認
3.共有メモリロック
4.レス数インクリメント
5.共有メモリロック開放
6.datにアペンド。
902▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/08 16:45:33 ID:WD2hE2cd
mod_cgidso入れさせてテストさせて見たいといってみるテスト
せっかく5.3Rもでたことですし、exで実験!と振ってみるテスト

>>900
つーことは今のbb.cgiソース管理者は不動楽さんということでFA?

>>901
mmapはかなりコストを食うということで却下された経緯があったはず
903root▲ ★:04/11/09 02:39:27 ID:???
>>902
管理者というか、いじっている人の一人かと。
904▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/09 09:22:11 ID:hTgm05bT
>>903
ふむ、では今いじれるのはrootさんを除くと(一部はその気になればいじれるため)

ひ(りゃ(ほとんど触っていなさそうだけど)
見習い
不動楽

あとだれがいましたかね。
905root▲ ★:04/11/09 11:04:11 ID:???
>>904
某受験生
906ヾ(゚パ)ノ ◆f0.zuburi6 :04/11/09 18:50:58 ID:b9gs6s98
南の(ry
つまり>>905
907 ◆cZfSunOs.U :04/11/15 22:41:54 ID:ZCkDk6ko
read.cgi はともかく bbs.cgi で mod_cgidso を使うとなると,
普通の実行可能バイナリじゃなくて共有オブジェクトにしなきゃいけないとか,
自前でリソース解放してくれないとどんどんリークしていっちゃうとかで,
perlcc で直接バイナリ作るんじゃなくて,生成された C コードを
手作業で直さなきゃならないんでしょうけど......

まぁ bbs.cgi に関しては,fork() させないようにするなら
mod_perl の方が現実的かなとは思います.

あとは,suExec の代替措置も必要なんでしょうけど,
perchild MPM よりも安定して動くと言われているのがこれ.
    Metux MPM http://nibiru.borg.metux.de:7000/wiki.mpm/

**********************************************************************

個人的に bbs.cgi 関連で気になっているのは,まずは ftp のリンク URL が
おかしくなること (ex. ftp://core.ring.gr.jp/pub/ ).これは ime.nu で
ftp リンクを扱えるようになっていなければ,ime.nu を入れず直リンに
した方がいいのかも知れませんけど.

あとは,NAME/MAIL の Cookie の問題ですね.設定がサーバサイド,
読み出しがクライアントサイドという不整合のため,Mozilla 等では
文字化けしてしまうと.現状では Set-Cookie ヘッダで設定していますが,
これを JavaScript の方で設定すればいいのではないかな,と.
とはいえ,bbs.cgi 出力に Cookie 設定用 JavaScript コードを入れると,
" や \ を \ でエスケープさせる必要がありますが,Shift JIS だと
漢字等の2バイト目が \ になることもあるんで,この判定をきっちりやるのも
結構大変か......むしろ bbs.cgi 出力では行わず,投稿フォーム側の
onsubmit() でこの処理をやらせた方が安全ですかね.
908 ◆cZfSunOs.U :04/11/15 22:43:05 ID:ZCkDk6ko
その場合の各板トップ及び read.cgi 出力の JavaScript コード変更案.
----------------------------------------------------------------------
onload = function(e) {
    var N = getCookie("NAME"), M = getCookie("MAIL"), i;
    with (document)
        for (i = 0; i < forms.length; i++)
            if (forms[i].FROM && forms[i].mail) {
                forms[i].FROM.value = N;
                forms[i].mail.value = M;
                if (forms[i].addEventListener)
                    forms[i].addEventListener("submit", setCookie, false);
                else
                    forms[i].onsubmit = setCookie;
            }
};

if (!Date.prototype.toUTCString)
    Date.prototype.toUTCString = Date.prototype.toGMTString;

function setCookie(e) {
    var exp = new Date();
    exp.setMonth(exp.getMonth() + 1);
    document.cookie = "NAME=" + escape(this.FROM.value) + "; path=/; expires=" + exp.toUTCString();
    document.cookie = "MAIL=" + escape(this.mail.value) + "; path=/; expires=" + exp.toUTCString();
}

function getCookie(key, tmp1, tmp2, xx1, xx2, xx3, len) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key)
            return unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1));
        xx1 = xx2 + 1;
    }
    return "";
}
909動け動けウゴウゴ2ちゃんねる:04/11/16 19:58:37 ID:gupowrUH
わかるひとそんなにいないんじゃないの?
910動け動けウゴウゴ2ちゃんねる:04/11/22 23:29:27 ID:lGHEU7j1
もう今はスクリプト配布してないんだっけ?
4.2ぐらいのころのは持ってるよ。
911動け動けウゴウゴ2ちゃんねる:04/11/24 13:24:29 ID:ZoS47VUx
MySQL使えないんでしょうか?
ファイルシステムでこの規模なんて自分では考えられないです。
DATを返すインターフェイス作っておけば問題ないと思うのですが・・・。
912動け動けウゴウゴ2ちゃんねる:04/11/24 15:16:57 ID:56mAf6sD
DBとの連携ってどこらへんで×だったんだっけ。
過去ログ引っ張り出すのもまんどくせ。
913動け動けウゴウゴ2ちゃんねる:04/11/24 16:28:12 ID:QEeeH5cs
別に技術的な理由で×というのは無かったような。
強いて言えばめんどくさいってだけ。
914動け動けウゴウゴ2ちゃんねる:04/11/24 20:17:51 ID:z53A+14I
beのbbs.cgiって新規物だよね。
915動け動けウゴウゴ2ちゃんねる:04/11/24 21:22:09 ID:oKqt30OR
>>914
DMDM と MDMD の MD5 を算出して、DB(MySQL) と照らし合わせて合致すれば桶だと思うので、
その部分以外は使い回しかと思われんこん。
916▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/25 08:59:42 ID:RPrai8qa
>>915
そもそもMD5があやしい疑惑があるんだが・・・・
917動け動けウゴウゴ2ちゃんねる:04/11/28 23:37:38 ID:LLgV0enQ
>>911
過去ログ検索とかではDBは有効だけど、ライブスレッドなら
ファイルのが負荷少ないしベストな選択のように思うけど、
どうなんだろう。
918動け動けウゴウゴ2ちゃんねる:04/11/28 23:48:22 ID:NucojG8+
負荷ってどうなるのかなぁ・・・
PHPで試しに作ってみる。
919動け動けウゴウゴ2ちゃんねる:04/11/28 23:59:22 ID:6IOqzKJj
>917
ファイルシステムにするとキューだのロックだのを同期する必要がある。
MySQLだと、そのあたりはデータベースに任せられる。

また、MySQLをバックエンドにして、閲覧系を複数にして負荷分散するのが非常に楽になる。
920917:04/11/29 00:10:17 ID:h4Qkpn0t
そうか書き込みのことを忘れてた・・・スマソ
MySQL速いらしいいいかもね。
921動け動けウゴウゴ2ちゃんねる:04/11/29 13:07:47 ID:n6JmgVVk
ひ(ryがいぢれないと採用してもらえなかった希ガス
922▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/29 17:10:20 ID:mfH1gp4Z
>>920
というかbbs.cgiはそもそも書き込み用途のはずではw
923動け動けウゴウゴ2ちゃんねる:04/11/29 20:36:27 ID:DNrkqTfx
datをDBにするとread.cgiも変えざる得ないから、読み書き両方を考える必要があるのか・・・
924動け動けウゴウゴ2ちゃんねる:04/11/29 20:55:08 ID:4MCabMvy
そーゆーんじゃなくってさ、
bbs.cgi の改良でだいぶよくなる気がする。
だって何あのソース??
おっきく仕様変えなくても。。
925動け動けウゴウゴ2ちゃんねる:04/11/29 22:24:47 ID:ePnTCL4s
>923
Perl DBIでインターフェースを作っとけば、仮にCで書きなおしたりしてもインターフェース部分だけ変えればよいと。
んでDBはDBで切り離してチューニングが出来ると。
閲覧系のキャッシュ同期とかがけっこうノウハウあるらしいので高負荷サイトはそれなりに難しいらしいけど。
926動け動けウゴウゴ2ちゃんねる:04/12/01 21:55:38 ID:fVLVA0+J
関連ページをクリックして、Pingを発射したとき
どう足掻いてもスレッドのURLの末尾の/が相手先に送れないのですが
この問題もこちらでよろしいでしょうか?
2ちゃんねるpingβのスレがあるといいのですが、見あたらないので・・・
927動け動けウゴウゴ2ちゃんねる:04/12/01 22:06:13 ID:BcbzKHvd
なんちゃって関連ページまとめツールβの不具合はこちらへ。
http://qb5.2ch.net/test/read.cgi/operate/1072413763/
928動け動けウゴウゴ2ちゃんねる:04/12/02 00:46:21 ID:WZTWIT/v
dW : Linux : Perlを最適化する
http://www-6.ibm.com/jp/developerworks/linux/041119/j_l-optperl.html

ほい。peko2スレから誘導されて貼りにきましたよ。
929FOX ★:04/12/02 14:59:24 ID:???
これから質問しまくるんで
優しく教えてください。

つまり Perl を知らないぼんくらなんです
930FOX ★:04/12/02 15:02:26 ID:???
sub bbs_main
{
our$version = "BBS.CGI - 2005 (for SpeedyCGI)";

&DispError2("FOX ★","<font color=green>FOX ★ ふふふっ</font>");
return;
}

とやって $version を DispEooro2 というサブルーチンで参照したいのですが
どうすれば参照できるんですか?

$version は SpeedyCGI に対応した、いわゆるグローバルな変数ではなく
ローカルな変数です。

ちなみにこうやって失敗しています(500 error)

print <<EOF;
version = $version
EOF
931root▲ ★:04/12/02 15:24:44 ID:???
■ bbs.cgi(SpeedyCGI)の巻 part1 (2004/12/01-)
http://dso.2ch.net/test/read.cgi/myanmar/1101890385/48

500エラーになって、書けないっす。
たぶん Premature なんちゃら、って言って、えらーログに残っているはず。
932▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/12/02 15:25:56 ID:WBZMaSLu
>>930
この例だと
-------------------
#! /usr/local/bin/speedy --r1

our $version = "BBS.CGI - 2005 (for SpeedyCGI)";

sub bbs_main
{

&DispError2("FOX ★","<font color=green>FOX ★ ふふふっ</font>",$version, $errnum);
return;
}
-----------
Dispの第2引数にversionを渡すようにしています。
errnumはエラー番号(たとえばapacheのエラーコードとか)
933root▲ ★:04/12/02 15:27:12 ID:???
FOX ★
FOX ★ ふふふっ

ホストHOST
FORM{'subject'}
名前: FORM{'FROM'}
E-mail: FORM{'mail'}
内容:
FORM{'MESSAGE'}

こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。

アクセス規制・プロキシー制限等規制は、2ちゃんねるビューアを使うと回避できることがあります。BBS.CGI - 2005 (for SpeedyCGI)

が出る時と、出ないで500 Internal Server Errorになる時がありますね。
934▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/12/02 15:30:00 ID:WBZMaSLu
>>930
あ、まちがい、ローカル変数だったですね。スマソorz

# 実は私もperlはあまり詳しくない・・・むしろPHPのほうが強い

printはdisperror内でですかね。
935動け動けウゴウゴ2ちゃんねる:04/12/02 15:31:46 ID:nD7Hw/zx
現時点での全ソース晒せ〜
936FOX ★:04/12/02 15:53:29 ID:???
いやー

まったく

たいへんたいへん
937動け動けウゴウゴ2ちゃんねる:04/12/02 15:53:47 ID:NQYkKTg/
なんかゴソゴソやっとるな
938FOX ★:04/12/02 15:58:54 ID:???
http://dso.2ch.net/test/bbs.txt

現時点での全ソース

今つまずいているところ【2】
$NOWTIME がローカルな変数になっていない
起動されるたびに変わらない

私の言っているローカルと一般的に言うローカルの意味が違うのかも、
別に私が言っているわけじゃないけどサ
939FOX ★:04/12/02 16:10:39 ID:???
でも、たまに変わるなぁ
ちょっと時間を置くと換わるのか?

http://dso.2ch.net/myanmar/

ここでやってます
940root▲ ★:04/12/02 16:13:12 ID:???
>>939
1分以上バックエンドにリクエストがないと、バックエンドをexitするようにしてあるので、
その時には元に戻ります。

やめる場合、bbs.cgiの1行目の-t60をやめればよいです。
941FOX ★:04/12/02 16:14:49 ID:???
なるほど、

-t60 なしでデバッグしたほうがいいっすね、
942FOX ★:04/12/02 16:15:43 ID:???
#!/usr/local/bin/speedy -- -b1048576

にした
ぜんぜんわからんな・・・orz

http://www.google.co.jp/search?q=cache:Fh2W0Hmt6b8J:qtea.bne.jp/2004/+PersistentPerl+OR+SpeedyPerl+OR+SpeedyCGI+%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0&hl=ja&lr=lang_ja
あたりに原因があるようだ。CGIモジュールは、でかいからねえ。なので、SpeedyCGIを使うように変更してみたが、どうやら、グローバル変数の初期化をしてないようなので、reset 'a-z';を先頭行に追加してみた。これで、なんとなく、まともに動作しているようだ。
> グローバル変数の初期化をしてないようなので

my $NOWTIME = time;

   ↓

my $NOWTIME;
$NOWTIME = time;
945FOX ★:04/12/02 16:53:42 ID:???
>>944
それやってみたけど、だめだったぞな
946FOX ★:04/12/02 17:01:01 ID:???
PID=$$ も書くようにした

当然のことながら、いつも同じPID、、、
さてさて〜、どうすればいいやら
947root▲ ★:04/12/02 17:04:34 ID:???
なるほど、、、。

常識的に(というか半ば無意識に)使っていたものが、使えなくなるですね。
代替手段は大体あるに違いないけど、こむずかしそうだ。
948FOX ★:04/12/02 17:08:27 ID:???
Time::time なんてのもあるんですか? < Perl
949動け動けウゴウゴ2ちゃんねる:04/12/02 17:20:37 ID:YeLg7Dw8
こういうノリではいかがでしょうか。

&bbs_main;
exit;

sub bbs_main {
my $GB = {};
$GB->{version} = "BBS.CGI - 2005 (for SpeedyCGI)";
$GB->{NOWTIME} = time;#現在時刻
$ENV{'TZ'} = "JST-9";#日本
#$ENV はそのまま使う
my %FORM;
$GB->{FORM} = {};
&foxReadForm($GB);#$FORM を読み込む

&DispError2($GB, "FOX ★","<font color=green>FOX ★ ふふふっ</font>");
return;
}

sub DispError2
{
my ($GB, $title, $topic) = @_;

print "Content-type: text/html; charset=shift_jis\n\n";
#-----------------------------------------------------------------------
print <<EOF;
<html>
<head>
<title>$GB->{title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body bgcolor="#FFFFFF"><!-- 2ch_X:error -->
<font size=+1 color=#FF0000><b>$GB->{topic}</b></font>
<ul>
<br>ホスト<b>HOST</B><br><b>GB->{FORM}->{'subject'} </b><br>
名前: $GB->{FORM}->{'FROM'}<br>E-mail: $GB->{FORM}->{'mail'}<br>
内容:<br>$GB->{FORM}->{'MESSAGE'}<br><br>
</ul>
<center>こちらでリロードしてください。<a href="../$GB->{FORM}->{'bbs'}/index.html"> GO! </a><br>
分からないことがあったら<a href="http://info.2ch.net/guide/">2ちゃんねるガイド</a>へ。。。<br><br>
アクセス規制・プロキシー制限等規制は、<a href="http://2ch.tora3.net/">2ちゃんねるビューア</a>
を使うと回避できることがあります。
</center>
<p>
time=$GB->{NOWTIME}<br>
$GB->{version}
</body>
</html>
EOF
#-----------------------------------------------------------------------
exit;
}
950FOX ★:04/12/02 17:30:39 ID:???
>>949
おおっ そういうほうが好き好き

$GB は構造体(クラス)と思えばいいのかな?
要素(メンバー)を追加するのは、たんに $GB->なんとか
とやれば追加されるのかな?

んで my で宣言されていても使い方がグローバルなら
結局はグローバルな変数になっちゃうということなのかしら?
951動け動けウゴウゴ2ちゃんねる:04/12/02 17:33:45 ID:WZTWIT/v
sub init_onceを書いて、初期化ルーチンを押し込めましょう。

そして初期化ずみフラグを見てrace condition回避も忘れずに。
952動け動けウゴウゴ2ちゃんねる:04/12/02 17:37:28 ID:YeLg7Dw8
>>949
my %FORM; を消し忘れた……。

>>950
よくは分からないですけど
外側のmy変数はコンパイル時に実体が作られるんでしょうか。
SpeedyCGIインストール完了

なんとなく離してみた
なぜか動いた
なぜだ〜〜〜

my $NOWTIME;#現在時刻
&bbs_main;

exit;

#########################################################
sub bbs_main
{
my $version = "BBS.CGI - 2005 (for SpeedyCGI)";
$NOWTIME = time;#現在時刻
954FOX ★:04/12/02 17:53:42 ID:???
>>952
なんでしょうねぇ
my しても、実際に使い方が悪かったらどっかに(CS?) 実態が
作られちゃうんでしょうねぇ
955動け動けウゴウゴ2ちゃんねる:04/12/02 17:56:29 ID:WC2kwP6B
んもう、書き直すならオブジェクト指向で書き直せばいいのに。
オブジェクト指向ならmod_perlの道が見えるのに。
956FOX ★:04/12/02 17:58:44 ID:???
>>955
それは大変すぎるですよ、私にとっては
次の世代の方々への贈り物ということで、

SpeedyCGI でかなり改善することが知りたいというのが目的なもんで
「かなり改善」が望めないならお蔵入りという話し。
957FOX ★:04/12/02 18:00:25 ID:???
http://dso.2ch.net/test/bbs998.txt

現在の bbs.cgi

こまっているところ【3】
&foxReadForm($GB);#$FORM を読み込む
安易に代入しただけじゃ駄目なの?

$GB->{FORM} = %FORM;  ← この部分

958動け動けウゴウゴ2ちゃんねる:04/12/02 18:11:54 ID:YeLg7Dw8
>>957
foxReadFormの頭で

my $FORM = $GB->{FORM};

として、代入の方は

$FORM->{$name} = "$value";

とするのがよいかと。
959FOX ★:04/12/02 18:12:56 ID:???
やってみるです
960FOX ★:04/12/02 18:16:02 ID:???
sub foxReadForm
{
my ($GB) = @_;

my $query_string = undef;
my (@m_elements, $m_element, $name, $value);
my %FORM = $GB->{FORM};

で駄目だった。 (my $FORM だと 500 error だった)
961動け動けウゴウゴ2ちゃんねる:04/12/02 18:17:51 ID:YeLg7Dw8
うひょ。

sub foxReadForm
{
my ($GB) = @_;

my $query_string = undef;
my (@m_elements, $m_element, $name, $value);
my $FORM = $GB->{FORM};

#環境変数からPOSTのでーたをもらう〜
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
@m_elements = split(/&/, $query_string);
foreach $m_element (@m_elements) {
($name, $value) = split(/=/, $m_element);
$value =~ s/\0//g;
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n/<br>/g;
$value =~ s/<br>/ <br> /g;
$value =~ s/[\0\x00-\x1f]//g;

$FORM->{$name} = "$value";
}
}


#1行データからは改行を削ってタグを閉じます
$FORM->{'subject'} =~ s/\#//g;
$FORM->{'subject'} =~ s/ <br> //g;
$FORM->{'subject'} =~ s/&//g;

$FORM->{'FROM'} =~ s/"/"/g;
$FORM->{'FROM'} =~ s/ <br> //g;
$FORM->{'mail'} =~ s/"/"/g;
$FORM->{'mail'} =~ s/ <br> //g;

$FORM->{'bbs'} =~ s/\|//g;
$FORM->{'bbs'} =~ s/\\//g;
$FORM->{'key'} =~ s/\|//g;
$FORM->{'bbs'} =~ s/\.//g;
$FORM->{'key'} =~ s/\.//g;
$FORM->{'bbs'} =~ s/&//g;
$FORM->{'key'} =~ s/&//g;
$FORM->{'time'} =~ s/\D//g;
$FORM->{'bbs'} =~ s#/##g;
$FORM->{'key'} =~ s#/##g;


$FORM->{'subject'} =~ s/&r//g;
$FORM->{'FROM'} =~ s/&r//g;
$FORM->{'mail'} =~ s/&r//g;
}
962FOX ★:04/12/02 18:18:47 ID:???
勘違いしているかな?

もう一回挑戦
963FOX ★:04/12/02 18:19:32 ID:???
>>961
どもども
コピペさせてもらいます、
964FOX ★:04/12/02 18:21:55 ID:???
わーい
うまくいった。

次へ行こう。
965▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/12/02 18:22:08 ID:WBZMaSLu
>>955
さすがにつらすぎるでしょう。

でも最終手段としての書き直しは軽く心に留め置いておいたほうがいいかもしれないと振ってみる
966FOX ★:04/12/02 18:31:09 ID:???
sub bbs_main
{
use CGI::SpeedyCGI;
my $sp = CGI::SpeedyCGI->new;
my $spv = $sp->i_am_speedy ? 'yes' : 'no' ;

$ENV{'TZ'} = "JST-9";#日本
#$ENV はそのまま使う
my $GBX = {};
$GBX->{version} = "BBS.CGI - 2005 (SpeedyCGI = $spv)";
$GBX->{NOWTIME} = time;#現在時刻
$GBX->{PID} = $$;#pid
$GBX->{FORM} = {};#
&foxReadForm($GBX);#$FORM を読み込む

require "./bbs-main.cgi";

&DispError2($GBX,"FOX ★","<font color=green>FOX ★ ふふふっ</font><br><br>これが表\示されるということは・・・<br>本体requireしたのにそっちへ行かないと、、、");
print "Content-type: text/html; charset=shift_jis\n\nWOWOWOWOWOW-----\n";
return;
}
967FOX ★:04/12/02 18:32:14 ID:???
require "./bbs-main.cgi";
で本体に処理を移そうとしたら・・・

最初の起動時は本体へ行った
しかーし、二回目以降はだめだった、、、

どうする?
968動け動けウゴウゴ2ちゃんねる:04/12/02 18:44:47 ID:WZTWIT/v
>967
>951
969動け動けウゴウゴ2ちゃんねる:04/12/02 18:46:08 ID:YeLg7Dw8
bbs-main.cgiの処理を関数に括りだしておいて
その関数を陽に呼び出せばいいような。
970FOX ★:04/12/02 18:49:18 ID:???
>>968
わたし・・・
理解不能なんです

>>969
そんなふうにしてみた

sub bbs_honati
{
my ($GB) = @_;

&DispError2($GBX,"FOX ★","<font color=green>FOX ★</font> いよいよ本体");
}

1;

んで &bbs_honati ; で呼び出してみた。
971風俗王:04/12/02 18:55:14 ID:lxr8SelU
今栃木県の宇都宮でトップのでりは???
972 [―{}@{}@{}-] j101097.ppp.asahi-net.or.jp:04/12/02 19:02:21 ID:yl4eb3hK
ホストが違う・・・

ERROR:ユーザー設定が消失しています!

ホストU178***.ppp.dion.ne.jp

名前:
E-mail:
内容:



こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。

アクセス規制・プロキシー制限等規制は、2ちゃんねるビューアを使うと回避できることがあります。
973U178142.ppp.dion.ne.jp:04/12/02 19:04:06 ID:YeLg7Dw8
あ、オレオレ。
974 [―{}@{}@{}-] j101097.ppp.asahi-net.or.jp:04/12/02 19:06:38 ID:yl4eb3hK
どうも前にエラーを出した人のを出してるような・・・
まあゴニョゴニョしてる途中だからかな
975桃太郎 ★:04/12/02 19:12:04 ID:???
僕ちんは
ERROR:サブジェクトが存在しません!だた。
976動け動けウゴウゴ2ちゃんねる:04/12/02 19:14:45 ID:XEy4KVeD
普通に書き込み画面からPOSTしてやる
結果:>>975

http://dso.2ch.net/test/bbs.cgiを直接開く
結果:>>972
977動け動けウゴウゴ2ちゃんねる:04/12/02 19:15:50 ID:XEy4KVeD
hostでなくなった(−−;
978FOX ★:04/12/02 19:15:53 ID:???
いろいろやっているだす

sub bbs_hontai
{
my ($GB) = @_;
my $FORM = $GB->{FORM};
my $NOWTIME = $GB->{NOWTIME};

&DispError2($GB,"FOX ★","<font color=green>FOX ★</font> いよいよ本体($GB->{FORM}->{bbs} , $FORM{'bbs'})");

$FORM{なんたら} ってのが沢山あるんで
my $FORM = $GB->{FORM};
と関数に入ったところで宣言してそのまま使おうと思ったんだが・・・
うまくいかんのだ

どすればいいのだろう
979動け動けウゴウゴ2ちゃんねる:04/12/02 19:29:49 ID:X6CTMNgw
my %FORM = $GB->{FORM};
とか?

といい加減に答えてみる
980動け動けウゴウゴ2ちゃんねる:04/12/02 19:30:03 ID:YeLg7Dw8
$GB->{FORM} は「ハッシュ」じゃなくて「ハッシュへの参照」なので
$FORM{なんたら} を $FORM->{なんたら} に変えないとダメっす。
981FOX ★:04/12/02 19:31:37 ID:???
>>979
やったけどだめだったっす、、

>>980
やっぱそうなんすか・・・
死ぬほどあるんだよなぁ
一気に置き換えるのは恐いしなぁ
982動け動けウゴウゴ2ちゃんねる:04/12/02 19:36:35 ID:X6CTMNgw
>>981 50%乙

FOX★氏はiijか・・・

ERROR:ユーザー設定が消失しています!

ホストh***.p***.iij4u.or.jp

名前: FOX ★
E-mail:
内容:
ffffcce
ffffcsvxxxxx
fffff
gggg
hhhh
983FOX ★:04/12/02 19:37:21 ID:???
ぐおっ
こわっ
984動け動けウゴウゴ2ちゃんねる:04/12/02 19:39:23 ID:WC2kwP6B
my %FORM = %{$GB->{FORM}}; # として
# ここで$FORM{hoge}に対してごにょぎょんして
%{$GB->{FORM}} = %FORM; # として返すとか?
985動け動けウゴウゴ2ちゃんねる:04/12/02 19:39:26 ID:YeLg7Dw8
難産ですねー……。
986FOX ★:04/12/02 19:40:12 ID:???
あなたはリロードスレッドが大好きです
http://dso.2ch.net/test/read.cgi/myanmar/1101913871/

かけたぞっ
987FOX ★:04/12/02 19:40:50 ID:???
>>984
一気に置換しちまったです
988動け動けウゴウゴ2ちゃんねる:04/12/02 19:42:22 ID:X6CTMNgw
かけた〜〜
乙乙
989FOX ★:04/12/02 19:44:58 ID:???
しかーし

結局 ホスト情報やらhtml名やらは元々グローバルだったから
ちゃんと $GB に入れてやら無いとまずいという話しかな、

結構大変そうだ、

まずは HOST 関係だけやってみよう。
990動け動けウゴウゴ2ちゃんねる:04/12/02 19:45:39 ID:aKb2TILl
次スレ!次スレ!
991桃太郎 ★:04/12/02 19:49:18 ID:???
>990
じゃああたすが代表して立てましょ
992桃太郎 ★:04/12/02 19:54:01 ID:???
993動け動けウゴウゴ2ちゃんねる:04/12/02 19:55:03 ID:X6CTMNgw
>>992
モツカレー
994動け動けウゴウゴ2ちゃんねる:04/12/02 19:59:41 ID:NQYkKTg/
おお、なんか面白い状況
995FOX ★:04/12/02 20:00:41 ID:???
たたけ たたけ たたけ〜♪
996ヾ(゚パ)ノ ◆f0.zuburi6 :04/12/02 20:02:37 ID:bBxy901j
おいらにゃー 狐のー 血がー さわーぐー
997動け動けウゴウゴ2ちゃんねる:04/12/02 20:03:16 ID:X6CTMNgw
・●はまだかな
・本文梨でも書き込める
・IDが???
がんばれ〜〜
998動け動けウゴウゴ2ちゃんねる:04/12/02 20:03:57 ID:NQYkKTg/
るーるるーるるるる
999ヾ(゚パ)ノ ◆f0.zuburi6 :04/12/02 20:04:34 ID:bBxy901j
1000(^_^;)
1000動け動けウゴウゴ2ちゃんねる:04/12/02 20:05:16 ID:X6CTMNgw
ワロタ




どのような形の削除依頼であれ公開させていただきます


2ちゃんねる(+Samba)       
アニメ | CM | ゲーム | 映画 | 音楽 | テレビ | 日記(+Samba)
       アニメ | CM | ゲーム | 映画 | 音楽 | テレビ |
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。