【Perl】掲示板を使ろう! (503レス)
1-

81
(2): 名無しさん@お腹いっぱい。 2001/07/16(月)17:17 ID:??? AAS
はじめまして。現在機能優先で掲示板を作っていて、コードの
効率は後回し中なのですが、いくつか質問があります。

・一般ではOpenでテキストを読み書きするのが多いようですが、
(MINIBBS程度の規模でも)TieやDBOPENを使ったものが見かけないのは
なぜですか?負荷について問題があるのでしょうか?

・発言データに関して、追加書き込みモードを基本にしてもファイルロックは
必要でしょうか?またどの程度の堅牢性を期待すべきでしょうか?

・読み出しに関して、基本的なスクリプトでは@LINE=<FILE>と
していますが、While(<FILE>)やその他の方法のうち、お勧め
なのはどれでしょうか?また、Seekを使った読み出しについて
省1
82
(1): panton 2001/07/16(月)19:29 ID:YjhPdxYw(1) AAS
>>81
ageで書いてもいいんじゃないかと思うけどなんでsage?

> ・TieやDBOPENを使ったものが見かけないのはなぜですか?
>  負荷について問題があるのでしょうか
掲示板の場合リニアなデータ構造が多いのでハッシュがメインの
タイは不向きといえば不向き。配列を結びつける事も出来るが、
インターフェイスが不完全。

> ・追加書き込みモードを基本にしてもファイルロックは
>  必要でしょうか?
必要です。堅牢性についてはデータの重要性によります。
省7
83
(1): 名無しさん@お腹いっぱい。 2001/07/16(月)19:58 ID:SlpU2cdo(1) AAS
>>82
age忘れです。

リニアな構造ということですが、発言IDやTIMEをキーにして
残りは従来のままスカラーでもよいと思ったんですが、、、。
負荷についてわからないというのは、ハッシュでは数百発言とも
なると負荷がかかるのかとか、あるいは値のサイズによって
負荷が変わるのかとかも考えたのですが。

追加書き込みモードについては、一般に恐れているのは
全部読み出し>退避+追加>全部書き出しの過程での全データ
消失だと思うので、追加書き込みでの危険性があまり認識
省1
84
(1): panton 2001/07/17(火)15:17 ID:/BDSxh5c(1) AAS
>>83
リニアというのは、掲示板は発言の並びに順番があるということです。
TIMEなどをキーにしてkeysでsortなんかをすることも出来ますが、
DBMの起動オーバーヘッドなんかを考えると、
あえて使う必要も無いかなという程度です。
記事数や値のサイズによる負荷の増加は気にするほどではないと思いますが、
よく知りません。

ファイルロックについては、いろんなところで調べてみるといいと思います。
追記モードでも同時に起こると、ファイルの同じ位置に書き込もうとして
データがおかしくなります。
85
(2): 名無しさん@お腹いっぱい。 2001/07/17(火)17:07 ID:sUEgTyfs(1) AAS
>>84
ありがとうございます。

あと他にも、疑問が生じたときに、理由は自分で考えてみたのですが
これでいいのでしょうか?

while (<FILE>)よりも@line <FILE>のほうが、読み込み時に
早くcloseを行うのでよさげ
・・・・>読み込み時は共有可、書き込み時はどっちみちロック

ANHTTP環境ではflock不可
・・・・>Renameロックかflockコメント化で我慢

全読み>全書き込みvs追加モード
省2
86
(1): 名無しさん@お腹いっぱい。 [0] 2001/07/17(火)19:00 ID:??? AAS
特定の行を抜き出すとき、

$line = (<FILE>)[5];

っていう方法はどうなんですかね。
87: 名無しさん@お腹いっぱい。 2001/07/17(火)19:12 ID:HRgjK2II(1) AAS
>>86
それは最悪でしょう。
そいういうものこそDB_FileのDB_RECNOを使うほうが良いと思いますがね。
88
(1): 名無しさん@お腹いっぱい。 2001/07/17(火)19:13 ID:??? AAS
なして最悪?
89: 名無しさん@お腹いっぱい。 2001/07/17(火)22:22 ID:??? AAS
>>85
> while (<FILE>)よりも@line <FILE>のほうが
なんでそんな結論になったのか知らないけど、普通ダメ。過去ログ読めよ。
> ANHTTP環境ではflock不可
HTTPDとflockは関係ありません。
> 全読み>全書き込みvs追加モード
質問の意味がわかりません。

なんか基本的なところがわかってないんじゃない?
CGI-MLとかの過去ログでも漁って勉強してきましょう。

>>88
省1
90
(1): 名無しさん@お腹いっぱい。 2001/07/18(水)01:34 ID:??? AAS
>>85
> while (<FILE>)よりも@line <FILE>のほうが、読み込み時に
> 早くcloseを行うのでよさげ
いくらclose()したって、ねぇ…。
89さんの言う通り、避けるべきかと。
「負荷」とか「メモリ」という言葉を(以下略
91
(3): 名無しさん@お腹いっぱい。 2001/07/18(水)13:28 ID:aJuOjafs(1) AAS
>>90
それは今になってみたら分かります。が、
初心者はこんなことを思っていたという、、、、。

>> ANHTTP環境ではflock不可
>HTTPDとflockは関係ありません。
御免なさい、WIN95+ActivePerl+〜というべきでした。

>> 全読み>全書き込みvs追加モード
>質問の意味がわかりません。
何で追加モードがあるのに、わざわざ全読み全書き込みするのか、という
ことです。
92: 名無しさん@お腹いっぱい。 2001/07/18(水)19:10 ID:??? AAS
>>91
つまり貴方には「全読み込み+全書き込み」と「追加書き」が同じ様に思えると?
正直ワケ分かりませんが。
93: 名無しさん@お腹いっぱい。 2001/07/19(木)04:20 ID:??? AAS
>>91
追加は追加。増える一方。
書き換えも行わない。

全読み全書きは、中途での処理の可能性を残している。
本当に全部書いてるのか?
加えて、書き換えてるんなら同じじゃない。

実際にテストして考えてから書き込んでくれ。
94
(2): 名無しさん@お腹いっぱい。 2001/07/19(木)04:23 ID:??? AAS
>>91
flockは evalかけろ。
95
(1): 名無しさん@お腹いっぱい。 2001/07/19(木)13:12 ID:??? AAS
(既存の掲示板スクリプトは)何で追加モードが・・・
ってこと?
そういうのばかりでもないし、そうする必要があるのかもしれないし、
ただ馬鹿なだけかもしれない。
どっちにしろ他人のスクリプトなんてどうで良い。
96
(1): 名無しさん@お腹いっぱい。 2001/07/19(木)15:48 ID:??? AAS
>>94
flockはevalかけるな。
97: 名無しさん@お腹いっぱい。 [____________________] 2001/07/19(木)17:50 ID:??? AAS
.
98: 名無しさん@お腹いっぱい。 2001/07/19(木)19:13 ID:FUSlV7zU(1) AAS
>>95
納得。 レス感謝

あとはレス行為に感謝
99: 名無しさん@お腹いっぱい。 2001/07/19(木)21:37 ID:1tfXBWXc(1) AAS
>>96 >>94
どっちなの
100
(1): 名無しさん@お腹いっぱい。 2001/07/19(木)21:44 ID:??? AAS
eval{flock(FILE,2)};
eval{flock(FILE,8)};
flockはevalをかければ非対応の環境でも致命的エラーにならない。
1-
あと 403 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s