bbs.cgiの開発作業をすすめていくためのスレッドです。
FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。
・雪だるま作戦への対応
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・長いメインルーチンをより短くコンパクトに
あたりがターゲットか。
前スレ:
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
探検
bbs.cgi再開発プロジェクト7
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNG2005/11/22(火) 23:12:47ID:7B8fTBqD0
ファイルシステムが「行」を管理してくれたら可能かもしれませんね(苦笑)
# (Count, ERROR message) = TotalLineNumberinFile(filename)
# Count = TotalLineNumberinFile(filename)
# filename は行数を調べたいファイル名
# Count は行数。-1の時はエラー。リストコンテキストで評価した場合、第2返り値にエラーメッセージが入ります。
# 正常に取得出来たときは'OK'が返ります。
sub TotalLineNumberinFile{
my $filename = shift;
my $count;
open my $filehandle $filename or return wantarray ? (-1,$!) : -1;
$count++ while <$filehandle>;
close $filehandle;
return wantarray ? ($count,'OK') : $count;
}
# (Count, ERROR message) = TotalLineNumberinFile(filename)
# Count = TotalLineNumberinFile(filename)
# filename は行数を調べたいファイル名
# Count は行数。-1の時はエラー。リストコンテキストで評価した場合、第2返り値にエラーメッセージが入ります。
# 正常に取得出来たときは'OK'が返ります。
sub TotalLineNumberinFile{
my $filename = shift;
my $count;
open my $filehandle $filename or return wantarray ? (-1,$!) : -1;
$count++ while <$filehandle>;
close $filehandle;
return wantarray ? ($count,'OK') : $count;
}
2005/11/22(火) 23:37:31ID:JzWOnNm+0
wcでも使うか
2005/11/23(水) 03:53:20ID:3uL3GDNB0
index.html作成時に必要なhtmlが無ければ作るというのは変じゃないような気がする。
ほとんどの場合、必要なhtmlが無い=スレ立て直後 だろうけど。
ほとんどの場合、必要なhtmlが無い=スレ立て直後 だろうけど。
299む P221119009124.ppp.prin.ne.jp
2005/11/23(水) 12:23:06ID:h05bzQxj0 そですね。作ること自体は間違いじゃないと。
今夜あたりにでもちと。
今夜あたりにでもちと。
300root▲ ★
2005/11/23(水) 16:52:24ID:???0 対応したです。
347 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/23(水) 16:47:32 ID:93wvGgv70
# 051123 htmlファイルが存在しなくて、かつしばらくたっても作られない場合にのみ、
# MakeIndex4PCからMakeWorkFileを呼ぶようにする by む
operate2 でテストしました。
html/ の下をからっぽにしてからレスして、必要な html が作られなおすことを確認済み。
347 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/23(水) 16:47:32 ID:93wvGgv70
# 051123 htmlファイルが存在しなくて、かつしばらくたっても作られない場合にのみ、
# MakeIndex4PCからMakeWorkFileを呼ぶようにする by む
operate2 でテストしました。
html/ の下をからっぽにしてからレスして、必要な html が作られなおすことを確認済み。
301root▲ ★
2005/11/23(水) 17:02:15ID:???0 ちょっと、ex13でテストしてみるかな。
html/html 全消しします。< ex13
問題が出なければ成功。
html/html 全消しします。< ex13
問題が出なければ成功。
302root▲ ★
2005/11/23(水) 17:02:39ID:???0 × ex13
○ neet4vip
○ neet4vip
303root▲ ★
2005/11/23(水) 17:04:07ID:???0 大丈夫そうですね。
様子を観察中。
様子を観察中。
305root▲ ★
2005/11/23(水) 19:20:36ID:???0 >>304
メールざっと見ました。
主旨は、帽子の強度というか取り扱い方面に関するご相談、ということですか。
で、bbs.cgi での取り扱いにからむので、ここできいたと。
直感的に、仕様変更というか仕様追加を伴いそうな話な気がするので、
内容をよく読んでから、お返事するです。
場合によっては、別途いろんな方にご相談させていただく可能性も。
ということで。
メールざっと見ました。
主旨は、帽子の強度というか取り扱い方面に関するご相談、ということですか。
で、bbs.cgi での取り扱いにからむので、ここできいたと。
直感的に、仕様変更というか仕様追加を伴いそうな話な気がするので、
内容をよく読んでから、お返事するです。
場合によっては、別途いろんな方にご相談させていただく可能性も。
ということで。
2005/11/23(水) 23:53:37ID:5fdaspcI0
外部にトラックバック打つ時にshift_jisのまま打つのはどうかと
307桶屋
2005/11/24(木) 01:53:13ID:tdesbJrh0308桶屋
2005/11/24(木) 01:55:17ID:tdesbJrh0 ここよりもむしろ雪だるまの話になるかもですが、
indexから見たhtml/ の下のファイルは、iframeにして埋めてしまうのはどうかと考えたことがあります。
つまり、index.htmlでは以下のようにしてしまい、スレッド順位が変わるときには"./01.html"の部分だけ書き換え。
<iframe src="./01.html" align="center" width="95%" height="90%" scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
(説明文)このページではインラインフレームを使用しています。
</iframe>
・
・
・
10スレッド分ほど繰り返す
メリットは、
・index.htmlが一気にコンパクトになって生成コストが下がる(cssにするだけより断然効果あり)
・前段にキャッシュを使う場合、html/ の下がヒットして稼げるかも
デメリットは、
・スクロールが二重に (;^ ^
・Netscape 4.7 など古いブラウザは、やっぱりiframeは使えない(cssの時と同じ互換性の問題)
indexから見たhtml/ の下のファイルは、iframeにして埋めてしまうのはどうかと考えたことがあります。
つまり、index.htmlでは以下のようにしてしまい、スレッド順位が変わるときには"./01.html"の部分だけ書き換え。
<iframe src="./01.html" align="center" width="95%" height="90%" scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
(説明文)このページではインラインフレームを使用しています。
</iframe>
・
・
・
10スレッド分ほど繰り返す
メリットは、
・index.htmlが一気にコンパクトになって生成コストが下がる(cssにするだけより断然効果あり)
・前段にキャッシュを使う場合、html/ の下がヒットして稼げるかも
デメリットは、
・スクロールが二重に (;^ ^
・Netscape 4.7 など古いブラウザは、やっぱりiframeは使えない(cssの時と同じ互換性の問題)
309桶屋
2005/11/24(木) 01:56:49ID:tdesbJrh0 それで、SETTING.TXTに、例えばINDEX_MODEといった新しいフラグを作っておいて、
INDEX_MODE=0 :デフォルト html/*.htmlファイルを作る。index.htmlも全部作る
INDEX_MODE=1 :html/*.htmlファイルを作る。index.htmはiframeで埋め込む
INDEX_MODE=2 :html/*.htmlファイルを作る。index.htmはサボる。今の実況板仕様
INDEX_MODE=3 :html/*.htmlファイルを作らない。index.htmはローカルルールとスレッド一覧と広告だけ
こういうのはどうですかね?(;^ ^ >SunOSさん他
INDEX_MODE=0 :デフォルト html/*.htmlファイルを作る。index.htmlも全部作る
INDEX_MODE=1 :html/*.htmlファイルを作る。index.htmはiframeで埋め込む
INDEX_MODE=2 :html/*.htmlファイルを作る。index.htmはサボる。今の実況板仕様
INDEX_MODE=3 :html/*.htmlファイルを作らない。index.htmはローカルルールとスレッド一覧と広告だけ
こういうのはどうですかね?(;^ ^ >SunOSさん他
310root▲ ★
NGNG >>307
> どこまでやろうと考えているかはわかりませんが、
> それを実際にやるときには、管理人に確認を取った方がいいと思います。
そうすね。
で、html/html を作るところは、まだカスタマイズの余地がありそうな肝。
例えば下の方のスレにsageでレスした時は、更新しないとか。
(今はレスしたものについては必ず作っている)
> どこまでやろうと考えているかはわかりませんが、
> それを実際にやるときには、管理人に確認を取った方がいいと思います。
そうすね。
で、html/html を作るところは、まだカスタマイズの余地がありそうな肝。
例えば下の方のスレにsageでレスした時は、更新しないとか。
(今はレスしたものについては必ず作っている)
2005/11/24(木) 03:04:04ID:PVimEjmL0
iframeは操作感が非常に悪くなると思います。
2005/11/24(木) 03:56:35ID:7i6JpL430
じゃー、今流行のajaxで
2005/11/24(木) 09:19:19ID:uDXz6nAD0
やりとりを見てると改善できる所は
まだまだありそうですね
まだまだありそうですね
314root▲ ★
2005/11/24(木) 13:38:26ID:???02005/11/24(木) 15:50:46ID:zK+0kexT0
SSIで挿入で
317▲ ◆cZfSunOs.U
2005/11/24(木) 21:08:18ID:g6I3uHOe0 >>267 実際に bbsd が吐く index.html を直接見るのが一番手っ取り早いかも知れません.
ただ,index.html 以外に index.css というファイルも生成するようになってまして,
これは SETTING.TXT の更新を検出するとそれに合わせて更新するようになってます.
>>308 そういう <iframe> (or <object>) の使用というのも考えたことも
あるにはあるんですが,やはりスクロール等の操作性の問題などもあると思います.
まぁ,bbsd での index.html 生成は bbs.cgi のよりは軽くなってるかと思うので,
とりあえず大筋では従来のやり方を踏襲する形でもいいかなという感じでやってます.
ただ,index.html 以外に index.css というファイルも生成するようになってまして,
これは SETTING.TXT の更新を検出するとそれに合わせて更新するようになってます.
>>308 そういう <iframe> (or <object>) の使用というのも考えたことも
あるにはあるんですが,やはりスクロール等の操作性の問題などもあると思います.
まぁ,bbsd での index.html 生成は bbs.cgi のよりは軽くなってるかと思うので,
とりあえず大筋では従来のやり方を踏襲する形でもいいかなという感じでやってます.
318root▲ ★
NGNG 厨な質問をば。
if ($errmsgが10桁の数字だったら)
というのは、Perlでどう書いたらいいのかしら。
if ($errmsgが10桁の数字だったら)
というのは、Perlでどう書いたらいいのかしら。
2005/11/26(土) 16:33:09ID:0o7g/RPa0
$errmsg =~ /^\d{10}$/
じゃないと、「aa1234567890」も真になっちゃわない?
じゃないと、「aa1234567890」も真になっちゃわない?
2005/11/26(土) 20:26:40ID:7t446eNO0
lengeh($_) == 10 || int($_) eq $_
2005/11/26(土) 20:27:38ID:7t446eNO0
あーリロードしてないしlengthだし
325動け動けウゴウゴ2ちゃんねる
2005/11/26(土) 22:43:57ID:zBsPZFmx0 なんかエラー出たんで貼っときますね
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1133001202 errmsg:No such file or directory)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
誘導されてきました
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1133001202 errmsg:No such file or directory)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
誘導されてきました
326stream ◆PNstream2s
2005/11/27(日) 16:51:15ID:wSLpr1G40327▲ ◆cZfSunOs.U
2005/11/27(日) 20:05:08ID:Q5XEP8aN0 >>326 それは意図的に1000までにさせてますが,1001以降も表示させた方がいいんでしょうかね?
書き込みフォームをなくすことで終了してるスレということを示すようにはしてますが......
書き込みフォームをなくすことで終了してるスレということを示すようにはしてますが......
2005/11/27(日) 20:18:34ID:u0humMch0
今までどおりのほうがいいような
2005/11/27(日) 20:23:12ID:xD14ZgWG0
なぜ書き込めないのか、という理由の表示として、
あった方がわかりやすいかもしれない。
状況を理解してもらうためのメッセージだし。
あった方がわかりやすいかもしれない。
状況を理解してもらうためのメッセージだし。
332325
2005/11/28(月) 00:34:23ID:N5H/ccvWO で>>325って何だったんですか?
なんとなくしかわからいんで教えてください。(´・ω・)
なんとなくしかわからいんで教えてください。(´・ω・)
333桶屋
2005/11/28(月) 00:48:22ID:0iPr7fvn0 どうぞ。
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/236-
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/236-
335root▲ ★
2005/11/28(月) 14:35:38ID:???0 >>334
それは確か、read.cgi だったような。
index.html は、bbs.cgiのソースを見る限りそうは見えないです。
常にdatのお尻のBBS_CONTENTS_NUMBER行を表示していたと思う。
それは確か、read.cgi だったような。
index.html は、bbs.cgiのソースを見る限りそうは見えないです。
常にdatのお尻のBBS_CONTENTS_NUMBER行を表示していたと思う。
336どくどくさぼてん
2005/11/28(月) 14:50:40ID:/GNK4Si70 ありゃ、ほんとだ、、いろいろ見てみましたけど
NHK教育実況板見たら100表示されてますね、、
だけど表示されてないように見えたのは気のせいか、、
すいません、
NHK教育実況板見たら100表示されてますね、、
だけど表示されてないように見えたのは気のせいか、、
すいません、
2005/11/28(月) 21:00:32ID:qciCODWD0
ここ扱いか知らんけど
スレッドの並べ替えってやっぱローカルで処理させたほうがいいんじゃないの?
スレッドの並べ替えってやっぱローカルで処理させたほうがいいんじゃないの?
2005/11/29(火) 10:40:56ID:zjVVPpoJ0
なんかよく判らんけどバグかな?
http://ex11.2ch.net/test/read.cgi/morningcoffee/1132910311/
俺が持ってる最後のレス
990 名前:名無し募集中。。。 投稿日:2005/11/29(火) 01:01:04 0
誰もいないな
がたぶん1000いってdat落ちするはずだったけど
スレタイもdatも無くなってリスタートしてる模様
http://ex11.2ch.net/test/read.cgi/morningcoffee/1132910311/
俺が持ってる最後のレス
990 名前:名無し募集中。。。 投稿日:2005/11/29(火) 01:01:04 0
誰もいないな
がたぶん1000いってdat落ちするはずだったけど
スレタイもdatも無くなってリスタートしてる模様
340root▲ ★
2005/11/29(火) 12:09:33ID:???0341root▲ ★
NGNG しかしこれは、リスクをぎりぎりまで減らすことはできても、
「ローカル雪だるま」をしない限り、なしにはできないですね。
従来のbbs.cgiでも、入り口のところでdatの存在は見ているです。
入り口ではあったのに、書くところで圧縮が入ってなくなったということで。
今の様子を見ていると、サーバ資源がどきどきしているlive系ではこの部分スルー(従来通り)で、
他ではこれ入れて、安全性を高めることにしよう。
「ローカル雪だるま」をしない限り、なしにはできないですね。
従来のbbs.cgiでも、入り口のところでdatの存在は見ているです。
入り口ではあったのに、書くところで圧縮が入ってなくなったということで。
今の様子を見ていると、サーバ資源がどきどきしているlive系ではこの部分スルー(従来通り)で、
他ではこれ入れて、安全性を高めることにしよう。
344root▲ ★
2005/11/29(火) 14:11:12ID:???0 これまで、mnewsplusとかnews4vipとかmorningcoffeeとかで、出ているですね。
所詮、特殊な板か。
所詮、特殊な板か。
2005/11/29(火) 14:43:16ID:j5QwZ4jc0
AFOX
2005/11/29(火) 15:45:02ID:OFgfa+aY0
いっそdatをSQL化して、.datは.htmlとかと同じように生成さぼる対象にしてはどうか。
で、read.cgiと同じパラメータ方法でdatの該当行だけとれるようにする。
そうしたらSQLのレベルで1000ロックとか排他とかできるようになりませんかね。
で、read.cgiと同じパラメータ方法でdatの該当行だけとれるようにする。
そうしたらSQLのレベルで1000ロックとか排他とかできるようになりませんかね。
2005/11/29(火) 16:01:32ID:F6/xCrikO
2ちゃんねるブラウザが使えなくなる
2005/11/29(火) 16:22:16ID:OFgfa+aY0
350▲ ◆cZfSunOs.U
2005/11/29(火) 16:28:16ID:GdnIox6j0 C レベルでの open() 関数呼び出し段階で
スレ立て時: O_WRONLY|O_CREAT|O_EXCL (同一名ファイルが存在すれば EEXIST)
レス追記時: O_WRONLY|O_APPEND (ファイルが存在しなければ ENOENT)
というフラグ付きで呼ばれるようにできればファイルの存在確認とオープンが
アトミックに行えるんですよね(bbsd ではそうしてます).
となると,Perl では sysopen() を使えばいいのかな......
スレ立て時: O_WRONLY|O_CREAT|O_EXCL (同一名ファイルが存在すれば EEXIST)
レス追記時: O_WRONLY|O_APPEND (ファイルが存在しなければ ENOENT)
というフラグ付きで呼ばれるようにできればファイルの存在確認とオープンが
アトミックに行えるんですよね(bbsd ではそうしてます).
となると,Perl では sysopen() を使えばいいのかな......
>>350
定数を利用するのには use Fcntl がいるですね♪
定数を利用するのには use Fcntl がいるですね♪
353root▲ ★
NGNG354root▲ ★
NGNG こうかしら。
・スレ立て時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_CREAT|O_EXCL, 0666) or &DispError2(スレ立て失敗処理);
・レス追記時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_APPEND) or &DispError2(レスができない処理);
で、index.html とか subject.txt / subback.html とかを
安全にかつうまくこなすには、どういうアイディアが考えられるのかと。
・スレ立て時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_CREAT|O_EXCL, 0666) or &DispError2(スレ立て失敗処理);
・レス追記時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_APPEND) or &DispError2(レスができない処理);
で、index.html とか subject.txt / subback.html とかを
安全にかつうまくこなすには、どういうアイディアが考えられるのかと。
356root▲ ★
NGNG これで、うまくいったようです。
これで、datの存在チェックうんぬんのところと、
追記してクローズした後でdatをchmod 666しているところをとばせました。
Over1000処理してchmod 555datをあとから追いついて
chmod 666することがなくなったので、
より、安全にもなったはず。
# 新スレの場合、datがあったらエラー
if($GB->{NEWTHREAD})
{
sysopen(OUT, $filename, O_WRONLY|O_CREAT|O_EXCL, 0666)
or &DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
# レスの場合、datに追記できなかったらエラー
else
{
sysopen(OUT, $filename, O_WRONLY|O_APPEND, 0666)
or &DispError2($GB,"ERROR!","ERROR:レスしようとしたらdatに書けませんでした。今dat落ちしちゃったかもです。");
}
これで、datの存在チェックうんぬんのところと、
追記してクローズした後でdatをchmod 666しているところをとばせました。
Over1000処理してchmod 555datをあとから追いついて
chmod 666することがなくなったので、
より、安全にもなったはず。
# 新スレの場合、datがあったらエラー
if($GB->{NEWTHREAD})
{
sysopen(OUT, $filename, O_WRONLY|O_CREAT|O_EXCL, 0666)
or &DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
# レスの場合、datに追記できなかったらエラー
else
{
sysopen(OUT, $filename, O_WRONLY|O_APPEND, 0666)
or &DispError2($GB,"ERROR!","ERROR:レスしようとしたらdatに書けませんでした。今dat落ちしちゃったかもです。");
}
357root▲ ★
NGNG chmod 555datを => chmod 555したdatをあとから
358root▲ ★
NGNG 481 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/30(水) 03:23:06 ID:vRY99gsD0 ?###
# 051130 WriteDatFile改良、sysopenを使用しより安全確実な処理に by む
# 051130 WriteDatFile改良、sysopenを使用しより安全確実な処理に by む
359root▲ ★
NGNG When opening a file, a lock with flock(2) semantics can be obtained by
setting O_SHLOCK for a shared lock, or O_EXLOCK for an exclusive lock.
If creating a file with O_CREAT, the request for the lock will never fail
(provided that the underlying file system supports locking).
ふむ、、、。
しかし、どうなんだろう。
setting O_SHLOCK for a shared lock, or O_EXLOCK for an exclusive lock.
If creating a file with O_CREAT, the request for the lock will never fail
(provided that the underlying file system supports locking).
ふむ、、、。
しかし、どうなんだろう。
360root▲ ★
NGNG これは、index.html / subject.txt / subback.html i/index.html(qb5とbbspinkのみ)
といったファイルの話です。
今は、
index.html subject.txt … 一時ファイル(*1)を作ってそっちで作り、それをrename
subback.html i/index.html … ロックなしでいきなり本ファイル作成(カミカゼ状態)
に、なっているです。
で、animeサーバやmorningcoffee、news4vipなど、たくさんの書き込みがあるところで、
かつlive系と違ってスレ数が多くてファイル生成にコストがかかるところを中心に、
上記の一時ファイルがだんだんと溜まっていき、
例えばanimeサーバではメモリディスクを圧迫していき、何回か破綻状態になりました。
で、このへんをなんとかできると、こういったことも減るんじゃないかなと。
上のほうでもおじさんが書いていたような気がしますが、
まずはopenやsysopenのエラーチェックをまじめにやるべきなのかもですね。
といったファイルの話です。
今は、
index.html subject.txt … 一時ファイル(*1)を作ってそっちで作り、それをrename
subback.html i/index.html … ロックなしでいきなり本ファイル作成(カミカゼ状態)
に、なっているです。
で、animeサーバやmorningcoffee、news4vipなど、たくさんの書き込みがあるところで、
かつlive系と違ってスレ数が多くてファイル生成にコストがかかるところを中心に、
上記の一時ファイルがだんだんと溜まっていき、
例えばanimeサーバではメモリディスクを圧迫していき、何回か破綻状態になりました。
で、このへんをなんとかできると、こういったことも減るんじゃないかなと。
上のほうでもおじさんが書いていたような気がしますが、
まずはopenやsysopenのエラーチェックをまじめにやるべきなのかもですね。
361root▲ ★
NGNG あとは、renameでやる手法でやる時の、最後のrenameのところをどうするかか。
今は、こんな処理をしているですね。
my $resuc = 0;
until($resuc)
{
$resuc = rename($subtemp, $subject);
}
これだと、何らかの形でrenameが失敗し続けると、ブロックしてしまうような。
…といったところで、今日はここまでか。
http://qb5.2ch.net/test/read.cgi/operate/1130482779/248
は、またあとで。
今は、こんな処理をしているですね。
my $resuc = 0;
until($resuc)
{
$resuc = rename($subtemp, $subject);
}
これだと、何らかの形でrenameが失敗し続けると、ブロックしてしまうような。
…といったところで、今日はここまでか。
http://qb5.2ch.net/test/read.cgi/operate/1130482779/248
は、またあとで。
my $rename_status = eval {
for (1..10){
rename($subtemp, $subject) and return 0;
}
return $!;
}
if (defined $rename_status) {
&DispError2($GB,"ERROR!","ERROR:subject.txtは変更出来ませんでした。($rename_status)")
}
こんなかんじかな?
for (1..10){
rename($subtemp, $subject) and return 0;
}
return $!;
}
if (defined $rename_status) {
&DispError2($GB,"ERROR!","ERROR:subject.txtは変更出来ませんでした。($rename_status)")
}
こんなかんじかな?
363▲ ◆cZfSunOs.U
2005/11/30(水) 08:23:38ID:0+e07y/o0 >>355 乙です.
>2番目のにも、0666 が必要すね。
mode (0666) が反映されるのはファイル作成時だけなので,
単に追記するだけなら不要です(指定しても実害はないでしょうが).
で subject.txt 等の更新処理ですが,ロックなしだと例えば
bbs.cgi-1: subject.txt 読み込み
bbs.cgi-2: subject.txt 読み込み
bbs.cgi-1: 1111111111.dat レス数インクリメント
bbs.cgi-2: 1111111112.dat レス数インクリメント
bbs.cgi-1: subject.txt.1 に書き出し
bbs.cgi-2: subject.txt.2 に書き出し
bbs.cgi-1: subject.txt.1 -> subject.txt にリネーム
bbs.cgi-2: subject.txt.2 -> subject.txt にリネーム
のようになると「1111111111.dat レス数インクリメント」は反映されなく
なってしまいますね.これならいっそのこと,一時ファイル名は固定にして
O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
スキップするようにしてしまってもいいかも知れません.
きっちりやるとしたら,やはりロックせざるを得ないでしょう.
ちなみに,bbsd ではファイルロックより軽い mutex で排他制御してます.
# もっとも,この前の負荷試験では mutex の保護下でやってるのに
# 1000 越え発生という奇妙な現象も起こってしまったので,
# その点は要観察なわけですが......
>2番目のにも、0666 が必要すね。
mode (0666) が反映されるのはファイル作成時だけなので,
単に追記するだけなら不要です(指定しても実害はないでしょうが).
で subject.txt 等の更新処理ですが,ロックなしだと例えば
bbs.cgi-1: subject.txt 読み込み
bbs.cgi-2: subject.txt 読み込み
bbs.cgi-1: 1111111111.dat レス数インクリメント
bbs.cgi-2: 1111111112.dat レス数インクリメント
bbs.cgi-1: subject.txt.1 に書き出し
bbs.cgi-2: subject.txt.2 に書き出し
bbs.cgi-1: subject.txt.1 -> subject.txt にリネーム
bbs.cgi-2: subject.txt.2 -> subject.txt にリネーム
のようになると「1111111111.dat レス数インクリメント」は反映されなく
なってしまいますね.これならいっそのこと,一時ファイル名は固定にして
O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
スキップするようにしてしまってもいいかも知れません.
きっちりやるとしたら,やはりロックせざるを得ないでしょう.
ちなみに,bbsd ではファイルロックより軽い mutex で排他制御してます.
# もっとも,この前の負荷試験では mutex の保護下でやってるのに
# 1000 越え発生という奇妙な現象も起こってしまったので,
# その点は要観察なわけですが......
364root▲ ★
NGNG >>362
そんなようなことを考えていたです。
ただ、エラーにするんじゃなくて、たぶん単にあきらめて一時ファイル消して次に行くかんじで。
(新スレの時はもうちょっといい加減じゃないほうがいいかもですが)
>>363
> のようになると「1111111111.dat レス数インクリメント」は反映されなく
> なってしまいますね.
そですね。
いわゆる「不可視スレ」ができちゃうのも、同じ原因だとにらんでいるです。
news4vip morningcoffee newsplus とかで起きやすいことも、それを裏付けているかんじで。
> これならいっそのこと,一時ファイル名は固定にして
> O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
> スキップするようにしてしまってもいいかも知れません.
これ、直感的にはよさげな気がしますが、
いきなり全サーバに入れるのは、ちとどきどきするですね。
ex11 ex14 anime ぐらいで、ちょっと試したいなと。
あと固定にするとしても、新スレの時とレスの時では、
一時ファイル名として別のを用意したほうがいいような肝するです。
なんてことを、だらだらと。
そんなようなことを考えていたです。
ただ、エラーにするんじゃなくて、たぶん単にあきらめて一時ファイル消して次に行くかんじで。
(新スレの時はもうちょっといい加減じゃないほうがいいかもですが)
>>363
> のようになると「1111111111.dat レス数インクリメント」は反映されなく
> なってしまいますね.
そですね。
いわゆる「不可視スレ」ができちゃうのも、同じ原因だとにらんでいるです。
news4vip morningcoffee newsplus とかで起きやすいことも、それを裏付けているかんじで。
> これならいっそのこと,一時ファイル名は固定にして
> O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
> スキップするようにしてしまってもいいかも知れません.
これ、直感的にはよさげな気がしますが、
いきなり全サーバに入れるのは、ちとどきどきするですね。
ex11 ex14 anime ぐらいで、ちょっと試したいなと。
あと固定にするとしても、新スレの時とレスの時では、
一時ファイル名として別のを用意したほうがいいような肝するです。
なんてことを、だらだらと。
366root▲ ★
NGNG 流れとしては
1) あんま排他とか考えない太古代 (2001)
2) 排他しまくりで壊れない中生代 (2002-)
3) 排他なんてやってる余裕なし、壊れてもok の戦国時代 (2004-)
となっています。
わざわざ、排他は全部はずしたのだー
1) あんま排他とか考えない太古代 (2001)
2) 排他しまくりで壊れない中生代 (2002-)
3) 排他なんてやってる余裕なし、壊れてもok の戦国時代 (2004-)
となっています。
わざわざ、排他は全部はずしたのだー
簡単に言えば排他等を組み込んでコスト(お金)を払うのもひとつの戦術ではあるけど、
それによって負荷増大、キャパシティ減少になったとき
それをやめて現状復帰が容易なようなコーディングを切に希望
それによって負荷増大、キャパシティ減少になったとき
それをやめて現状復帰が容易なようなコーディングを切に希望
369root▲ ★
NGNG >>367
はい、知っているです。
bbs.cgiにばっちり、コメントで残っているですね。
3) は、live8 とともに私もリアルタイムで経験したです。
で、そろそろ世代交替を狙っているということすね。
雪だるまのほうは、こうなったのかな。
4) コストの低い排他制御で、スマートにこなす現代(2005-)
従来バージョンのほうは、2006年かなぁと。
はい、知っているです。
bbs.cgiにばっちり、コメントで残っているですね。
3) は、live8 とともに私もリアルタイムで経験したです。
で、そろそろ世代交替を狙っているということすね。
雪だるまのほうは、こうなったのかな。
4) コストの低い排他制御で、スマートにこなす現代(2005-)
従来バージョンのほうは、2006年かなぁと。
371root▲ ★
NGNG で、flockでやる方法は「いやーんばかーん」なわけで、
もうちょっと「はやいうまいやすい」方法は、ないもんかなと。
もうちょっと「はやいうまいやすい」方法は、ないもんかなと。
あと 大きな流れとしては「雪だるま」に全部置き換え、
と思っているんで、旧世代の捨て去られる bbs.cg の面倒見ても
意味内科と、
と思っているんで、旧世代の捨て去られる bbs.cg の面倒見ても
意味内科と、
2005/11/30(水) 23:16:00ID:BgKaphH50
過去ログ倉庫のやつはこっちかな
■http://qb5.2ch.net/test/read.cgi/operate/1105909861/405
■http://qb5.2ch.net/test/read.cgi/operate/1105909861/405
2005/11/30(水) 23:53:00ID:yD2pFeo50
baseでtarget指定してるからね。
そこだけ_selfにでもするか。
そこだけ_selfにでもするか。
2005/12/01(木) 00:48:07ID:AW478pq70
1.一時ファイルに新スレをどんどん追加
2.一時ファイルからsubject.txtを生成
…ダメかな?
2.一時ファイルからsubject.txtを生成
…ダメかな?
378root▲ ★
NGNG リネーム部分 改良案
#############################################################################
# ファイルのリネームを行う
# 入力: $src、$dst
# 戻り値: 0またはエラーメッセージ
#############################################################################
sub TryRename
{
my ($src, $dst) = @_;
my $status = undef;
my $count = 100;
my $debug = 0;
# ex11で実験することにする
# 他サーバには、うまくいったら入れよう
if($ENV{'SERVER_NAME'} =~ /ex11/)
{
$debug = 1;
}
# 100回、renameを試行してみる
for (1..$count)
{
rename($src, $dst) and return 0;
}
# だめだったらステータスを保存する
$status = $!;
# デバッグしている時は、ユーザの画面にその旨表示する
if($debug)
{
print "bbs.cgiデバッグ中。。。<br>\n";
print "renameに失敗しましたが、そのまま処理を続けます。<br>\n";
print "($src)($dst)($status)<br>\n";
print "<br>\n";
print "このメッセージをコピペして、運用情報板の以下のスレッドに報告していただけるとありがたいです。<br>\n";
print "<br>\n";
print "bbs.cgi再開発プロジェクト7<br>\n";
print "<a href=\"http://qb5.2ch.net/test/read.cgi/operate/1130918407/\">http://qb5.2ch.net/test/read.cgi/operate/1130918407/l50</a><br>\n";
print "<br>\n";
}
# デバッグしてない時は、ゴミファイルを消す
else
{
unlink($src);
}
return $status;
}
#############################################################################
# ファイルのリネームを行う
# 入力: $src、$dst
# 戻り値: 0またはエラーメッセージ
#############################################################################
sub TryRename
{
my ($src, $dst) = @_;
my $status = undef;
my $count = 100;
my $debug = 0;
# ex11で実験することにする
# 他サーバには、うまくいったら入れよう
if($ENV{'SERVER_NAME'} =~ /ex11/)
{
$debug = 1;
}
# 100回、renameを試行してみる
for (1..$count)
{
rename($src, $dst) and return 0;
}
# だめだったらステータスを保存する
$status = $!;
# デバッグしている時は、ユーザの画面にその旨表示する
if($debug)
{
print "bbs.cgiデバッグ中。。。<br>\n";
print "renameに失敗しましたが、そのまま処理を続けます。<br>\n";
print "($src)($dst)($status)<br>\n";
print "<br>\n";
print "このメッセージをコピペして、運用情報板の以下のスレッドに報告していただけるとありがたいです。<br>\n";
print "<br>\n";
print "bbs.cgi再開発プロジェクト7<br>\n";
print "<a href=\"http://qb5.2ch.net/test/read.cgi/operate/1130918407/\">http://qb5.2ch.net/test/read.cgi/operate/1130918407/l50</a><br>\n";
print "<br>\n";
}
# デバッグしてない時は、ゴミファイルを消す
else
{
unlink($src);
}
return $status;
}
379root▲ ★
NGNG これに対応したbbs.cgiを、ex11に入れてみよう。
で、1日動かしてみると。
で、1日動かしてみると。
380root▲ ★
NGNG ex11に入れてみた。
狼のスレに、お知らせしてこよう。
これでまずは、現状把握と。
うまくいけば、おじさんが手で消している一時ファイル消去の頻度が、減るかも、かも。
狼のスレに、お知らせしてこよう。
これでまずは、現状把握と。
うまくいけば、おじさんが手で消している一時ファイル消去の頻度が、減るかも、かも。
381root▲ ★
2005/12/01(木) 02:58:07ID:???0382root▲ ★
2005/12/01(木) 11:23:40ID:???0 中間報告
・animeサーバは、切り替えて以降500エラーはなしでした。
・ex11は、出ているようです。
メッセージが悪さしているかもしれないので、
ex11でも、画面にメッセージが出ないようにしてみた。
試験継続で。
・animeサーバは、切り替えて以降500エラーはなしでした。
・ex11は、出ているようです。
メッセージが悪さしているかもしれないので、
ex11でも、画面にメッセージが出ないようにしてみた。
試験継続で。
383root▲ ★
2005/12/01(木) 11:24:35ID:???0 なお、rename試行回数を100回から1000回にしてみた。< ex11
384root▲ ★
2005/12/01(木) 13:00:18ID:???0 だらだらと観察中。
-rw-rw-rw- 1 ch2ex11 ch2 16384 Nov 30 18:54 237491133170255.tmps
-rw-rw-rw- 1 ch2ex11 ch2 32768 Nov 30 19:41 252251133408443.tmps
-rw-rw-rw- 1 ch2ex11 ch2 0 Nov 30 18:33 443801133404390.tmp
ううむ、きりのいい数字が。
このへんにヒントがあるのかもね。
-rw-rw-rw- 1 ch2ex11 ch2 16384 Nov 30 18:54 237491133170255.tmps
-rw-rw-rw- 1 ch2ex11 ch2 32768 Nov 30 19:41 252251133408443.tmps
-rw-rw-rw- 1 ch2ex11 ch2 0 Nov 30 18:33 443801133404390.tmp
ううむ、きりのいい数字が。
このへんにヒントがあるのかもね。
385root▲ ★
2005/12/01(木) 14:08:05ID:???0 banana723.maido3.com から、アクセスがあるようです。
どこか、臭いかいでいる板があるのかも。
banana723.maido3.com のDNSキャッシュも、リスタートいただけますか。
他には、2ch内部からのアクセスはないようです。
どこか、臭いかいでいる板があるのかも。
banana723.maido3.com のDNSキャッシュも、リスタートいただけますか。
他には、2ch内部からのアクセスはないようです。
389root▲ ★
2005/12/01(木) 14:16:26ID:???0 ということで、リスタート自体は必要になります。
よろしくお願いいたします。
よろしくお願いいたします。
2005/12/01(木) 17:55:08ID:L5aUvDTn0
すいません
前スレでも検討中だった2ch規約承諾問題ですが、まだ
> 消費者契約法上、確認を取ってクッキーを発行するのならば契約の成立の主張を主張するのならば分かるが、確認取る前の表示の段階でクッキーを発行しているんだぜ。
> パンフ送れば申し込まなくても契約成立みたいな感じ。
>
> 当然、俺はこの書き込みの著作権を主張するし、2chに2ch以外での著作権の複製権があるなんて俺は今でも認めていない。
>
> 匿名組合との契約書で、契約書を貰った段階で申し込みを止めたら契約は不成立だよな。
> 2chのクッキーの発行のタイミングがおかしいんだよ。確認画面を表示したら契約成立って考えだろ。
> そんな訳ないじゃん。
ttp://live19.2ch.net/test/read.cgi/stock/1131996799/501
こんなたわけた理屈を言っているコテハンがいますので、何とか対処のほどよろしくお願いします。
前スレでも検討中だった2ch規約承諾問題ですが、まだ
> 消費者契約法上、確認を取ってクッキーを発行するのならば契約の成立の主張を主張するのならば分かるが、確認取る前の表示の段階でクッキーを発行しているんだぜ。
> パンフ送れば申し込まなくても契約成立みたいな感じ。
>
> 当然、俺はこの書き込みの著作権を主張するし、2chに2ch以外での著作権の複製権があるなんて俺は今でも認めていない。
>
> 匿名組合との契約書で、契約書を貰った段階で申し込みを止めたら契約は不成立だよな。
> 2chのクッキーの発行のタイミングがおかしいんだよ。確認画面を表示したら契約成立って考えだろ。
> そんな訳ないじゃん。
ttp://live19.2ch.net/test/read.cgi/stock/1131996799/501
こんなたわけた理屈を言っているコテハンがいますので、何とか対処のほどよろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 《中居正広に新たな女性アナ告発報道の裏で》トラブル発覚前に「あの子いいべ…」関心寄せた元NHKアナ [Ailuropoda melanoleuca★]
- 「新宿駅から出られず半泣き」…トラブルも 大学受験、親も同行すべき? [おっさん友の会★]
- 【フジテレビ】渦中の佐々木恭子アナ「社長とのディナー賞」受賞していた 現在は出社停止★2 [ネギうどん★]
- 新幹線でたこ焼きを食べたら「臭え」「迷惑」と批判殺到 改札内で売ってるのに…JR東海の見解は ★3 [Ailuropoda melanoleuca★]
- 今田耕司、中居正広のトラブルは「驚いたとしか言いようがない」“ホテル飲み”は「僕はない」 [ひかり★]
- 最新版「好きな芸人ランキング」 3位有吉弘行、2位サンドウィッチマンを抑えた1位は? [muffin★]
- 野菜が値上がりしすぎて、肉が安く感じるよな。 [782460143]
- 【実況】博衣こよりのえちえちロマサガ2リメイク🧪 ★7
- 悔しいけどネトウヨ登山家・野口健の20歳の娘がエロカワ🤤 [718678614]
- 【悲報】自民党の裏、金問題、会計担当の職員(72)を起訴 [834922174]
- コンビニ売れ残り、困窮家庭に無償提供へ。住民税非課税世帯と児童扶養手当の受給世帯が対象。※マイナンバーと連携した専用アプリ必要 [256556981]
- トランプ政権誕生で1ドル130円になるらしい [203993948]