X

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

■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
垢版 |
NGNG
bbs.cgiの開発作業をすすめていくためのスレッドです。

FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。

・雪だるま作戦への対応
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・長いメインルーチンをより短くコンパクトに

あたりがターゲットか。

前スレ:
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
103root▲ ★
垢版 |
2005/11/09(水) 01:43:13ID:???0
で、狼やらVIPやらanimeサーバやらで 500 エラーが起こりやすい理由の一端は、
>>80 が原因の予感のもより。
2005/11/09(水) 01:48:08ID:kbrSpD780
>>103
まだまだあちこちにありますからねぇ
105root▲ ★
垢版 |
2005/11/09(水) 01:53:07ID:???0
>>104
狼でちょっとだけ聞いてみたところでは、
どうもクリーンナップ大作戦の後、少し減ったらしいです。

出なくなるのは、まだまだ先かなと。
106root▲ ★
垢版 |
2005/11/09(水) 04:04:11ID:???0
結局、
・まずは従来通りdatから全部とることにして、クリーンナップをすすめる

ことにしました。
コストは、かわんないですもんね。

で、GetDatInfoを書きました。
>>84 さんに感謝です。

#############################################################################
# 処理中のdatの情報を$GBにセットする
# $GB->{DATNUM}, $GB->{DAT1}, $GB->{DATLAST}
#############################################################################
sub GetDatInfo
{
my ($GB, $outdat) = @_;
my $datfile = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
my $datlastnum = $FOX->{$GB->{FORM}->{bbs}}->{"BBS_CONTENTS_NUMBER"};

if($GB->{NEWTHREAD})
{
# 新スレの場合
$GB->{DAT1} = $outdat;
$GB->{DATNUM} = 1;
@{$GB->{DATLAST}} = ();
}
else
{
# レスの場合
open(DAT,"<$datfile");
$GB->{DAT1} = <DAT>;
@{$GB->{DATLAST}} = <DAT>;
$GB->{DATNUM} = $.;
close(DAT);
if (@{$GB->{DATLAST}} > $datlastnum)
{
@{$GB->{DATLAST}} = splice(@{$GB->{DATLAST}}, -$datlastnum);
}
}

return 0;
}
107root▲ ★
垢版 |
NGNG
BBS.CGI - 2005/11/09

雪だるまに向けたクリーンナップ大作戦 その3

・GetDatInfo (>>106) を作り、datへの追記(新スレでは作成)直後に呼ぶようにしました。
・datの情報はもっぱらここでとることにし、$GB に蓄えて使いまわすようにしました。
・html/ の下を作るところ(MakeWorkFile)では、datはオープンしなくしました。
・Over1000 をサブルーチン化して、GetDatInfo の直後に呼ぶようにしました。
・これでMakeWorkFile内から、1000超えチェックが分離できました。
108root▲ ★
垢版 |
NGNG
subject.txt を作るところ

sage のほうが、処理工数が多いのね。
ちょっと目からうろこ。
109root▲ ★
垢版 |
NGNG
BBS.CGI - 2005/11/09a

# 051109a 雪だるまに向けたクリーンナップ大作戦 その4
# UpdateSubject (subject.txt作成) サブルーチン化
# いよいよ、神の領域の入り口に突入か by む
110root▲ ★
垢版 |
NGNG
# 051109b @newsub を @{$GB->{NEWSUB}} にして追放(UpdateSubjectに封じ込め) by む

本日はここまでの予定。
111root▲ ★
垢版 |
NGNG
で、わかってきたことは、
subject.txt って軽々しく作っている割に、
suback.html も index.html も /i/index.html (qb系 dso系 bbspinkのみ)も、
ぜーんぶ、これをベースにこしらえているらしいということだなぁ。

こりゃ、非同期にsubject.txtをなんてのは、とんでもない話だなぁ。
何が起きるか、予想もできないや。

というかたぶんもともと、宣撫らでの参照のために作ったんじゃなくて、
そうゆう内部処理のために、作ってるんだろうなぁ。

なぁ。
2005/11/09(水) 20:44:50ID:bCrNV8fy0
なぁ。
2005/11/09(水) 21:19:18ID:V3FpTdxV0
なぁ


その部分は歴代誰もさわっていない気がする
なぜなら太古のままの姿で残っているから、
しいていえば dat と subject のずれをなくすため
およびdjをなくすため、神か or トオルさんが2001年ころ手を加えたかと、
114root▲ ★
垢版 |
2005/11/09(水) 22:36:45ID:???0
>>113
神殿の入り口にさしかかったと。
2005/11/10(木) 00:14:57ID:QrzYKomJ0
|∀・)<そこに凶悪なすらいむが現れたっ!
2005/11/10(木) 16:46:58ID:ewPRrhz60
root探検隊2005秋
「驚愕! 未開の地bbs.cgiの奥地に謎の古代神殿subject.txt生成部を発見!?」
2005/11/10(木) 22:15:46ID:ww1y0hkN0
今日あたりから妙な動作をしてる気がするんだが、何かいじってる?
具体的には
・某板で、かなり時間を置いて違う内容を書き込もうとしても二重書き込みが出る
・しょうがないのでIP変えたら書き込めた
・IP変えた後、他の板に書き込んだら何故かcookie確認が出ない
出た現象としてはそれだけ。
どこの板とかは出さないので、回答には特に期待していないけど。
118root▲ ★
垢版 |
2005/11/10(木) 23:22:03ID:???0
>>117
そのへん、全然変えてないです。

上2つは、過疎な板だと正常な動作としてよくあるですね。
一番下は、ちと気になりますが。
2005/11/10(木) 23:50:38ID:r6yN1X4Qo
確認画面の話が出てるから、自分もちょっと

先日の京ぽんのID末尾o→0の関係でごちゃごちゃやってた以降
自分の味ぽんはどの板で書いても、回線切ろうが、電源切ろうが
確認画面が1度も出ないんですが、良いのでしょうか?

ごちゃごちゃの当日に指摘した時は流された気がしますが…
120root▲ ★
垢版 |
2005/11/10(木) 23:56:11ID:???0
>>119
奥様(味ぽんユーザ)では「普通は最初だけ出るよ」
「でも、最初でも出ないときがあるみたい。再現性はわかんない」

ということらしいです。
うぅむ。

# 「最初だけ出る」が、意図した動作。
2005/11/11(金) 00:11:52ID:NuFqu9WRo
>>120
そう、「最初の1回だけ出て後は出ない」なら今まで通りで何の
疑問も感じない訳ですが

自分は最近、確認画面を全然見てないから謎なんですよ


まぁ、面倒が無くて良いって言えば良い訳ですけど
122root▲ ★
垢版 |
2005/11/11(金) 00:14:17ID:???0
>>121
それって、京ぽんを 0 にしてからなったということですかね。
ううむ。
2005/11/11(金) 00:30:50ID:NuFqu9WRo
>>122
タイミング的にはそんな感じです
完全にイコールかと言われると判りませんが

確か一連の作業中に一時的に味ぽんから書き込めなくなって
その後、復活してからの様な気がしますが
124root▲ ★
垢版 |
2005/11/11(金) 00:58:58ID:???0
>>123
ふーむ。

うちの環境では幸運にも実物で試してもらえるので、
また、時間取れたときにみてみるです。
125root▲ ★
垢版 |
2005/11/11(金) 01:03:49ID:???0
おぉ、わかた、、、。>>123

あとで、なおしておこう。 @ 今qb6で別の作業中
2005/11/11(金) 01:22:19ID:NuFqu9WRo
>>124
>>125
よろしくお願いします
でわでわ
127root▲ ★
垢版 |
2005/11/11(金) 02:07:06ID:???0
とりあえずoperate2で動くのを確認しました。>>126

今日の作業がおわったら、配布で。
128root▲ ★
垢版 |
2005/11/11(金) 02:50:50ID:???0
BBS.CGI - 2005/11/11

109 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/11(金) 02:42:33 ID:d6RFRwJS0
・味ぽんでも投稿確認画面が出るように(虫取り)
・MakeWorkFile から緊急ストッパーを切り出し(Emerg1020 Emerg1050)
・UpdateSubback サブルーチン化
・MakeIndex4PC サブルーチン化

今日までで、bbs_main中から、だらだらと長くて保守性の悪い部分はなくなったはず
2005/11/11(金) 10:36:36ID:bijjdSzJ0
質問。味ぽん=京ぽん?
2005/11/11(金) 11:16:25ID:ujB+FScJ0
一般的な意味を聞いてるなら味ぽん!=京ぽん。JRCの出した初代AirH" Phoneの事と考えるのが普通。
MUMUMU氏の意図ならAirH" PHONE全部という可能性もあるな。
# もうAirH" PHONEというブランドは無いんだけども。
2005/11/11(金) 11:44:53ID:bijjdSzJ0
>>130
やはりAirH"=京ぽんをもじって味ぽんに(りゃな解釈?
132root▲ ★
垢版 |
2005/11/11(金) 11:53:17ID:???0
私の定義:

・味ぽん: AH-J3001V AH-J3002V AH-J3003S

これらはbbs.cgi内で特別扱いしています( o 表示のゆえん )。

京ぽんのbbs.cgiでの特別扱いは全廃されました。
PCと全く同じ扱いです。

今後出るWillcom端末は、特別扱いしたくないですね。
ちゃんとリファラ吐いて、クッキー食べてほしい。
133root▲ ★
垢版 |
2005/11/11(金) 15:53:35ID:???0
bbs.cgi のぐろーばるーについてのチラシの裏

$FOX <= 船単位で設定 (基本的に出航時に1回設定される)
$GB <= 1トランザクション単位で設定 (1投稿ごとに設定される)

例えば、SETTING.TXT の値はこうやって得られるです。

・SETTING.TXTは出航時に読めばよい固定値だから$FOX
・でも板名はトランザクションごとに変わるから$GB
・その下に要素がぶらさがる

$FOX->{$GB->{FORM}->{'bbs'}}->{"BBS_CONTENTS_NUMBER"}

SpeedyCGIの特性を利用した、すごくよい使い分けと思います。
もしこれがなかったら、どうやってもカオスからは脱出できなかった。

他の処理系をまたぐ必要のあるぐろーばるーは、全部追放か$GBに押し込める方向で。
でないと、どれがどれなんだかちっとも。

で、概ねそれはできたような気がしているです。
といっても、ほとんどはおじさんがやったわけですが。
134root▲ ★
垢版 |
2005/11/11(金) 15:56:31ID:???0
で、該当部分。
# ちょっと感動した。

#設定ファイルを読む
sub foxReadSettings
{
my ($GB) = @_ ;
my $ita = $GB->{FORM}->{'bbs'} ;

$GB->{DEBUG} .= "SETTING.TXT よみこむ? $ita<br>";
if(defined($FOX->{$ita}))
{
$GB->{DEBUG} .= "SETTING.TXT 既に読み込み済みー(1)$ita<br>";
return 0;
}
$GB->{DEBUG} .= "SETTING.TXT よみこみー$ita<br>";
(以下略)
2005/11/11(金) 16:22:24ID:JzwJQ4w9O
デバッグの部分はリリース時に外さないの?
136root▲ ★
垢版 |
2005/11/11(金) 16:24:07ID:???0
>>135
既に概ね、外れているです。
(ここはたまたま、外れてなかっただけみたい)
2005/11/11(金) 16:31:56ID:jjmtFB0c0
なにか言いたいけど
すでに getting drunk
138root▲ ★
垢版 |
2005/11/11(金) 16:32:47ID:???0
>>137
現地は夜ですか。
2005/11/11(金) 16:36:12ID:jjmtFB0c0
そろそろ 11時? たぶん
三人でぽとる一本あけたから、、、、

with Jim &79
2005/11/11(金) 16:41:15ID:8LbVSMli0
ぼうしぬいで、だらだら。

>>139
79さんですか。
そりゃ、たいへんだ。

ところで、飲酒禁止とか控えるとかゆう話、ありませんでしたっけ。
2005/11/11(金) 16:43:19ID:jjmtFB0c0
ないない

蒸留酒はok to me
2005/11/11(金) 16:45:01ID:8LbVSMli0
そっか。

プリンが規制中なんでしたっけ。
2005/11/11(金) 16:46:03ID:jjmtFB0c0
そうそう

beer とか wine はご法度

でも沢山のんだけど in Euro
2005/11/11(金) 18:58:25ID:10GttyzX0
めっ
NGNG
DispError(sprintf qq|プリンが規制中です(%d)|, $GB->{prin}) if defined $GB->{prin};
2005/11/11(金) 23:03:06ID:HIL5rI6a0
通風こわいよ通風
147root▲ ★
垢版 |
NGNG
167 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/12(土) 05:19:07 ID:axdTew+g0 ?###
BBS.CGI - 2005/11/12a

# 051112a 雪だるまに向けたクリーンナップ大作戦 その6
# $GB->{OUTDAT}, $GB->{LOGDAT}, $GB->{xID}, $GB->{xBE} 新設
# ResAnchor, MakeBEString, MakeIdStringAndLogdat, MakeLogdat,
# MakeOutdat, Update924, WriteDatFile 以上サブルーチン化 by む

これで、bbs_main の真ん中当たりにあったアドホックなワーク用変数を
ほとんど整理した。

明日あたりから、Check_HardPosting (連続投稿ですか?のところ)を見始めるか。
2005/11/12(土) 08:55:55ID:???P
­
NGNG
↑あら、ならなかったです

キャップ付けるとoutdatってなるだす
150root▲ ★
垢版 |
NGNG
>>148-149
MakeOutdat をサブルーチン化する時に、
saku sakud saku2ch だけ特殊処理をしているところ
(これらは HOST: を表示しているが、キャップだとさらにそれらは出ない)
に、虫を入れてしまいました。

すみません。

2chの動作報告はここで。 パート18
http://qb5.2ch.net/test/read.cgi/operate/1131005961/173-192
151root▲ ★
垢版 |
NGNG
サブルーチンにして移動する時に、
色気心を起こして、処理の順番を変えてしまったです。

・虫がいた時

if (saku sakud saku2ch) {
if (capじゃない) {
datにHOST: が入ったのを作る
}
}
else
{
普通のdatを作る
}

・今(前と同じ)

普通のdatを作る
if (saku sakud saku2ch) {
if (catじゃない) {
datにHOST: が入ったのを作る
}
}
152root▲ ★
垢版 |
NGNG
変えてしまった => 変えてしまっていた >>151

しかも、>>151 の上のやつはオプティマイズにはなっていないわけで。
なんだかなぁ。おじさんにセッキョーされそうだなぁ。(´・ω・`)
NGNG
猫?                   いや、何となくです。分かりますから、、、ゴメンチャイ
154動け動けウゴウゴ2ちゃんねる
垢版 |
2005/11/13(日) 02:31:52ID:eVSZ3HVd0
qb5用のbbs.cgiの存在は、なかなか微妙だと思います。
削除系全般のHOST処理とか、BBQで串マークとか、規制でもfusianaで書き込めるとか。

バグの温床。 if(板名)ってのはなんとかやめること出来ないのかなあ

と、中身を何も知らないのに言ってみるテスト
2005/11/13(日) 02:50:38ID:YDwKttrcP
qb5だけ別CGIにすれば?
156root▲ ★
垢版 |
NGNG
>>155
いやーん。

絶対、面手できなくなりそう。
2005/11/13(日) 03:02:06ID:YDwKttrcP
そこを何とかがんばれ!
158root▲ ★
垢版 |
NGNG
timecount/timecloseの処理をしているところって、
ずいぶん、贅肉があるみたいな。

歴史的経緯ですか。

simplify したいけど、今はとりあえずこのままにしておくか。
2005/11/13(日) 03:58:48ID:pV+LpfpY0
あるファイルをbbs.cgiだけがさわっているのであればラッキー
その確証が得られないor得るのがめんどくさい → 放置
誰かが作った装置をさっさと取り外すのはやはり嫉妬の渦の中 → さわらぬなんとか

なんてのが bbs.cgi の歴史です
160root▲ ★
垢版 |
NGNG
>>159
> 誰かが作った装置をさっさと取り外すのはやはり嫉妬の渦の中 → さわらぬなんとか

そうゆうものですか、、、。

私なんか、あんまりそうゆうこと考えずについさわってしまうし、そのことをどんどん公開してしまうし。
だから、いかんのかしら。
161root▲ ★
垢版 |
NGNG
もちろん理由がなければそういうことはやらないし、
基本的には全部表でやるわけですけど。

て裕香、表でやれないようなことは、やっぱ体にも心にもいくないっす。
せめて2ちゃんねるぐらいでは、そうゆうことはできるだけしたくないなと。
162root▲ ★
垢版 |
NGNG
2ちゃんねるぐらい = 趣味の世界

ってことですね。
仕事の世界だと、なかなかそうもいかないわけで。

あとはMakeWorkFileをちょっと読んで、今日は中身はいじらずにもうねるか。
2005/11/13(日) 08:17:00ID:ANRcdU0J0
(雑談スマソ)
>>161そこで裕香と誤変換しますか。彼女とか娘とか、はたまた平田裕香のファンなのか・・・チョイキニナル
2005/11/13(日) 10:05:33ID:OKtukaNP0
>>163
saku / sakud 等でよく見かける方のいち隠れファンです。
165桶屋
垢版 |
2005/11/13(日) 11:38:03ID:MUh++HtM0
>>158
今の時代、本当にtimecount/timecloseが必要なのか、一度考え直すのもいいのかも。

連続投稿に関してはsamba24 やバーボンができました。
投稿に関する対応は、ボランティアさんも含めた新しい仕組みが動くようになりました。
timecount/timecloseは、これらがない時代からあるものですね。

timecount/timecloseの必要性と、実装や運用のコストの比較になるのかなと。
2005/11/13(日) 11:57:08ID:S6x+4xF20
samba24は鯖ごと、バーボンに至っては全板一律だからなぁ。
確かsamba24はSETTING.TXTで設定できるようにする、って話もあったけど、
ただ、最近もちょくちょく全板でいっせいに設定値変えとかしてるから、
ちとそうもしづらいのかなぁ。とか。
2005/11/13(日) 14:35:57ID:hLwbWE8U0
>>165
板によって、結構絶妙なバランスで設定されてる
値だと思いますけどね。普通の使い方をしてる人では、
まず引っかからないし見ないから、「空気みたいなもの」
としか感じないかもしれませんが。

けど見てると、設定を微妙に変更することで、荒らしさんは
やっぱり速度が落ちたりとかするのを見たりします。
だから効果はあるんだと思います。

逆に言えば、普通の人がやたら引っかかるようなものは、
それなりに問題なんじゃないですかね。
2005/11/13(日) 16:49:45ID:ZszaVLMv0
>>166
もしできればでいいですけどsambaは全板と各板(setting.txt)の共存ができればええんでないかと
NGNG
>>165-167
それなりに効果は出ていると思います。
たぶん2ちゃんねるが今よりもっともっと小さかった頃は、
画期的な仕組みだったんだと思うです。

でも今となっては、ファイルI/Oのコストが毎回(少ないとはいえ)
発生するのが、ちと気になるですね。
ということで投稿数が多い板だと、
この方式を現在の実装でやるのは、ちょっと苦しいところがあるです。

基本的に、効果を大きくしようとしてFIFOの段数を大きくすると
コストも大きくなってしまいますし、
段数が少ないと、効果が薄いです。

ということで、雪だるまにしてbbsd側でオンメモリでやるなら、
それほどでもないという読みで、今の方式を踏襲する形での実装は、
してもらおうかなと思っているです。
オンメモリならコストは低いし、実装もそれほどでもなさそうなので。

<チラシの裏>
あと、メッセージ本文の最初の何文字かとか本文の長さとか、
投稿したスレッドのキーとか時間とか、いろいろとっているけど、
今は全く使っていないので、このへんの贅肉をとって、
いずれはすっきりしたいなと思っているです。
<チラシの裏の隅>
たぶんこのへんも規制に使おうとした、あるいは昔規制に使ったことがあるんだろうなと。
</チラシの裏の隅>
</チラシの裏>
NGNG
で、先回りして言ってしまうと、Samba24って、
そういうところが、よくできているです。

ようは、ひとことでいうと、
「大きい板でもコストを上げることなく、同じしくみで動かすことができる」ってことですかね。
スケーラビリティがあるとゆうか、成長に耐えるとゆうか。

実現している部分は正直、短いコードですけど、
かなり感心したところだったり。
2005/11/13(日) 22:13:04ID:pV+LpfpY0
さぁ みんなで踊ろう

S A M B A !

もうすぐ夜明けだ。
NGNG
>>171
なんか、早起きすね。
NGNG
そうか、時差があるのか
2005/11/13(日) 22:21:29ID:HwS9/loZ0
さてはまたゴルフだな・・・
2005/11/13(日) 22:21:47ID:H5U92I510
またドアをドンドンやられたの?
2005/11/13(日) 22:40:48ID:pV+LpfpY0
いやー

どこへ行ってもこんな感じの一ヶ月でした。
毎日五時に起きてしまい、夜も八時を過ぎればおねむ
きっとホームに帰ってもとうぶんそれが続くかと

起きたらまずススキのの生活・・・
NGNG
>>176
早朝営業ですっきり、ってやつですか。

ちと、おふろへ。
その後はSambaの解読と、live20のバージョンアップあたりを。
2005/11/13(日) 23:02:43ID:PTNu5bzS0
今、むーさんの人間性を垣間見たお。
NGNG
さて、、、。

1001のところ、どうするですかねぇ。
私は今の実装でも大きな問題はないと思っていたりしますが。

全部の船に共通の変数があるといいんですが、
たぶんそういうのは、なさげだし。
NGNG
WriteDatFile … datに追記
GetDatInfo … dat行数、>>1の内容、datの最後のいくつか(html/の下作成用)を取得
if (datが1000以上) Over1000 … 1001を書いて、chmod 555

というのが、今の流れです。

これをどうするのが、いんだべか。
2005/11/14(月) 00:26:57ID:SGvz0hKn0
>>180
そこのパーミッション書き換えタイミングにレスが重なると1000overカキコが
多発するんでしたっけ?
レス>1001の時にdat追記そのものを破棄することって難しいのかな?
多分難しいからおいちゃんも今の形にしてあったとは思うのですけど。
NGNG
Over1000 を複数のbbs.cgiが実行している、っちゅーことなんです。
それはたぶん避けられない気がするんで、さて、どうしたもんかなと。
NGNG
で、確実に止まっているようなので、
とりあえずは今のままでいいのかなとは思っていたり。
2005/11/14(月) 00:53:46ID:zmjS5IW10
perlってappendモードで開いているファイルに対して
ftell相当のこと出来ないのけ?
出来るなら、「自分が書き込んだ後の末尾の位置」を覚えておいて
再度(行数判定等のために)読み込んだときの合計サイズと一致している場合のみ
(==1000を書き込んだのが自分である場合のみ)
1001を追記したらよいのでは?

既にオープンしているファイルからftellするのは、
I/Oコスト的には大したことないはずだし。
NGNG
>>184
ぱっと見、それだと忙しい時、
1001が書かれなくなるような。
2005/11/14(月) 01:08:58ID:SGvz0hKn0
あーそうか。「同時に」なんだ。
てことは,実現させるには1001番以上が付くかどうかを各bbs.cgiが判定して,
以上なら強制的に止めてしまうしかないんですねえ。
NGNG
あとは、GetDatInfoして得たdatの最終行が既に1001だったら、
Over1000で1001を書かないぐらいかなぁ。
NGNG
>>186
やっぱ、それ(>>187)ですかね。
2005/11/14(月) 01:11:30ID:SGvz0hKn0
でもコレだと高負荷時の挙動が怖いようなw
NGNG
Perlで、その配列の最後の要素にアクセスするのって、どうするんだっけか。

具体的には、@{$GB->{DATLAST}} の最後。
NGNG
予想されるのは、

1000
1001 1000を超えました。。。
1002 普通の書き込み

とかで、終わるパターンすね。
chmod 555 は必ずするので、
壊れるリスクは今と同じのはず。
2005/11/14(月) 01:18:48ID:zmjS5IW10
あ、そっか。
まず書き込みをして、それから書けたかどうか判定するのか。

と思ったけど、>>184の5行目の()内が間違いで
(==最終レスを書き込んだのが自分であった場合のみ)
が正しいのかな。

とは言っても、「再読込」した後で他のプロセスが書き込んじゃうという
可能性もある(というより、現状その状態っぽい?)ので
複数プロセスがが1001を書き込むのは避けられない点は同じか。
2005/11/14(月) 01:19:56ID:tChr8Idl0
確実にやるにはロックなどで排他制御するしかないでしょうね.
ロック使用を回避するなら,わずかでもタイミングの隙が発生するのは不可抗力かと......
NGNG
>>193
やっぱ、そうかなとは思っていたりするです。

概ね動いてはいるようなので、1001がいっぱい書かれることを減らせれば、
とりあえずいいかなと思っていたり。
NGNG
$array[-1]; でいいのか。>>190

ちょっと、ごにょってみるか。
2005/11/14(月) 01:28:17ID:6MCcz+Tv0
>>195
おおっ そんなのあるんですか、
2005/11/14(月) 01:28:43ID:SGvz0hKn0
むずかしいー
1000時のみロックとかできないんでしょうかー
とか思ってしまいますです
まあ,1000以降で実際に書き込まれないならいいかな なんて思ったりもしますがw
2005/11/14(月) 01:30:04ID:zmjS5IW10
ん?現状でも、既に

AとBが両方書き込んだ後、
A:読み込み(.datは1000行)
B:読み込み(.datは1000行)
A:1001書き込み(.datは1001行)
B:1001書き込み(.datは1002行)
という経過によって、複数の1001が書かれているのではないですか?

とすると、読み込んだ内容をどう判定しようと
重複1001は減らないのでは?
2005/11/14(月) 01:34:41ID:SGvz0hKn0
これかー
ttp://cocohome.hp.infoseek.co.jp/perl_ref/array.html
マイナス添え字で最後から なんだ。

>>198
ああ,ほんとだ…
NGNG
いけそうだ。

$GB->{DATLAST}[-1] と $lastdat を比較して、
同じなら1001を書くのをさぼろう。 in Over1000
NGNG
こんなの?

$lastdat = "1001<><>Over 1000 Thread<> $b1000 <>\n";

# 既に1001が書いてあったら、書くのをやめる
if ($GB->{DATLAST}[-1] ne $lastdat)
{
# 1001書き込み処理
if(open(OUT,">>$dat"))
{
print OUT $lastdat;
close(OUT);

# $GBの処理
# datの番号をひとつすすめる
++$GB->{DATNUM};
# $GB->{DATLAST}をひとつ押し出す
shift(@{$GB->{DATLAST}});
push(@{$GB->{DATLAST}}, $lastdat);
}
}

# datを書けなくする
umask(0);
chmod(0555, $dat);

return 0;
NGNG
>>198
ふむ。確かにそうかも。
少しは減るかもぐらいか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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