せっかくだからPHPで掲示板作ってみませんか?
■ このスレッドは過去ログ倉庫に格納されています
0001⊂(´ー`⊂⌒ヽつ
NGNG結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
0202名無しさん@お腹いっぱい。
01/09/10 16:05ID:KqO6xo7o0203名無しさん@お腹いっぱい。
01/09/10 16:29ID:LD3E6s7.ファイルでやったら表示スレッド数だけのファイルを開いて閉じてを
繰り返さなければダメですよね?それよりは速いとおもう。
きちんとレステーブルにスレッドIDのフィールド作って
インデックス張っておけば問題ないレベルでしょう。
>>202
も出来る。
0204672
01/09/13 13:48ID:7asnw6oIPEAR使うとOOPが、でけそう気配だ。
0205名無しさん@お腹いっぱい。
01/09/13 22:50ID:Nq5e6DE2テーブル一つに全スレッド放り込むのとどっちがいいですか。
あるいは板ごとにテーブル作って(以下同文)
ようするにテーブルはいっぱい作らない方がいい?
0206202
01/09/14 04:28ID:YRsOR1eUPerlのOOと似たようなもんかな。。
0207163
01/09/14 14:44ID:NHumwnBYとりあえずスレッド一覧とレス格納用のテーブル一つずつ作って
PHP+MySQLでやってみました。今んところ問題ないみたい。
http://popee.gasuki.com/bbs_db/test/
0208ななしさん
01/09/14 21:40ID:I5Sj1HiA0209名無しさん@お腹いっぱい。
01/09/14 21:48ID:5kAOJ0Zkageってどうやってんの?
書き込まれたらスレッドの順番書いてあるフィールド書き換えてるの
か?何か効率悪っぽいな。ファイルの方がいいんじゃねぇ?
0210163じゃないけど
01/09/14 22:10ID:???ageの時は現在時刻入れておいて降順で並べればよいと思われ。
0211けん
01/09/19 11:08ID:hhAgINVoさらにDHTMLをかました掲示板もあります。
興味のある方は見てください。
http://www1.development-network.net/~ken/index.php
0212名無しさん@お腹いっぱい。
01/09/19 13:45ID:???0213名無しさん@お腹いっぱい。
01/09/19 17:45ID:tSRZDv1c(・∀・)イイ!!
0214名無しさん@お腹いっぱい。
01/09/22 16:41ID:G0469FQk0215名無しさん@お腹いっぱい。
01/09/22 16:52ID:hg/f7G7gあります
0216名無しさん@お腹いっぱい。
01/09/22 17:05ID:???綴り、ハァハァ……
0217けん
01/09/23 07:40ID:gaxvcfRoこのサーバーは友達がADSLで構築しています。
\200/月
で使用できます。
0218けん
01/09/23 22:29ID:5jHAZsXAMySQLってフリーだからいらないですよ。
0219ちたん
01/09/24 02:26ID:???0220名無しさん@お腹いっぱい。
01/09/28 21:01ID:yatlQWYk0221名無しさん@お腹いっぱい。
01/09/30 06:52ID:Adl10q6oそんなもんは出なくて、
白紙(IEでソース見るとレンタルサーバの広告のみ)しか出ない。
これはいったい何のエラーなんだか。
0222名無しさん@お腹いっぱい。
01/10/05 01:08ID:vTyw9JIM↑これはPHPですか?
0223名無しさん@お腹いっぱい。
01/10/09 12:21ID:ATYJfjH.0224名無しさん@お腹いっぱい。
01/11/06 22:17ID:BzxtU/sO同じ症状だよ。ここのスクリプト使ってみたんだけど。
http://www.charling.net/php/chat.html
0225名無しさん@お腹いっぱい。
01/11/07 01:45ID:FJMcKMjyサーバによっちゃエラーメッセージでないよ。
0226名無しさん@お腹いっぱい。
01/11/07 01:56ID:jj1CZs+fしかし奴はECUで書かなないとあかんのでめんどいのー。
ところでレンタルスペースのミルトクラブはトップからphpなのはいいが、
エラーメッセージさらしっぱなしでひじょうにみっともないんだが…。
直す気ないのか?
0227名無しさん@お腹いっぱい。
01/11/07 02:14ID:FJMcKMjyちなみに何処のサーバ?
0228名無しさん@お腹いっぱい。
01/11/07 03:13ID:MaWgfgVWhttp://kawara.adam.ne.jp/php/read.php?bbs=test
0229名無しさん@お腹いっぱい。
01/11/08 09:54ID:???$fp = fopen ("$logfile","a");
flock($fp,2);
fputs($fp, $hoge);
flock($fp,3);
fclose($fp);
で効きますか?
配布などは考えてません。
0230名無しさん@お腹いっぱい。
01/11/08 12:53ID:A2A4Idoa(・∀・)イイ!
0231名無しさん@お腹いっぱい。
01/11/09 16:15ID:t6/s73d3Cのflockと同じものなのか、それともPHPらしくもちょっと実用的にっていうか
229さんが書いたコードでオッケーな感じになっているのか……。
PHPのflockの中身を知りたいです。
あ。ソースを見ればいいのか。逝ってきます……。
0232柚鈴車 ◆sMGFahw.
01/11/26 10:28ID:???スレッドフロート式掲示板の開発を進めている。
学習しながらなんで非常に時間掛かってるけど。
只今の進行状況:3%ってとこか?
0233柚鈴車 ◆sMGFahw.
01/11/26 10:28ID:???0234hogehoge
01/12/20 16:19ID:gQq9NcEnツリー表示をする際のアルゴリズムとデータベースの構成を説明して貰えませんかのう。
PHP-Nukeのソース読んだけど理解出来ない...(・ A ・)
・[ 1 ] 逝ってヨシ
・[ 2 ] あぼーん
・[ 4 ] あぼーん
・[ 3 ] ワショーイ
↑こういう表示がスマートにできるようなアルゴリズム.....。
レスのテーブルに子レスIDのデータを持たせようとすると、
複数のレスがついた場合を考えて配列にしなきゃいけない。
レスのテーブルに親レスIDのデータを持たせると、
こんどは描画の際に面倒。
あとはレスに階層の深さテーブルを持たせるとか、
子レスの「数」を親レスに持たせるとか...。 ああ面倒。
php-nukeはいったいどうやって。
ttp://phorum.org/support/list.php?f=1&collapse=0
0235名無しさん@お腹いっぱい。
01/12/21 02:58ID:???データベースは知らんが
W1・新規スレッドの>>1とそれに対するレスを区別しないで時間順にテーブルにぶち込む。
その際、ユニークなメッセージIDを振る。
W2・レスはその返信先のIDをリファレンスとして保持、>>1は空欄のまま。
R1・書き出し時にリファレンスの項目を参照して1を取り出す。(時間順に並んでいれば普通は最初だが)
R2・1のメッセージIDでリファレンスを検索。一致するものを配列として取り出す。見つからなければreturn。
R3・とりだした配列の要素へR2の手順を実行。
な感じじゃないか?
要はただの再帰呼び出しだが。
0236名無しさん@お腹いっぱい。
02/01/19 09:39ID:???0237名無しさん@お腹いっぱい。
02/01/19 13:40ID:???再帰呼び出ししてます。
・[ 1 ] 逝ってヨシ *0
・[ 2 ] あぼーん *1
・[ 4 ] あぼーん*2
・[ 3 ] ワショーイ *1
0238nobodyさん
02/03/29 09:41ID:???0240nobodyさん
02/03/30 11:55ID:???0241nobodyさん
02/08/09 14:18ID:???http://bbs.rakusagashi.com/free/sample/bbs.php?db=sample
↑の掲示板、メールアドレス入力するところに
'>'>'>">">'>">'><IMG src='mailto:unko.ne.jp'><xmp>
って入力して投稿するとローカルでのみ、凄い事になるんだけど・・・。
他にもこの掲示板にセキュリティホールありますか?
教えて君でスマソ。
0242nobodyさん
02/08/19 10:07ID:???0243nobodyさん
02/08/19 10:12ID:???0244nobodyさん
02/10/27 04:08ID:ZBwddCFf0246nobodyさん
02/11/09 17:59ID:FW57v7fVごめんなすわぁい
0247nobodyさん
02/11/09 18:16ID:2u49zYCGhttp://cgi.aaacafe.ne.jp/
PHPなら これで十分
0249nobodyさん
02/11/10 03:38ID:CKDMXs5s厨でもCGIが使えるよ
これ使えばね
0250nobodyさん
02/11/11 20:27ID:???0251nobodyさん
02/11/12 17:44ID:84Orx8vW0252nobodyさん
02/11/17 00:06ID:rKD6R3WV教えて下さい。あと、素材があったら貼っといて下さい。
0253nobodyさん
02/11/17 00:37ID:???さっさと責任取ってくれんか?クソ人間。
2chの掲示板は何を使ってますか?
http://pc.2ch.net/test/read.cgi/php/1037459580/l50
各位。
PHPで掲示板なら昔作ったけど。ソースいる?
0254nobodyさん
02/11/17 23:26ID:qfDL9fIH0257nobodyさん
02/12/06 10:10ID:???0258でもさぁ
02/12/06 15:56ID:???便利そうな関数がごまんとあるし(perlでも多いと思ったのに・・)
データベースをそこそこさわり始めるとある程度の事までは
わかるんだけど、バキュームとかバックアップやらの事が出てきはじめると
ワケワカメになる。
掲示板とかでDB使うとそうとうグシャグシャな状態になりそうな気が
するんだが、大丈夫なもんなのか?
容量の問題もあるし・・・
0259でもさぁ
02/12/06 16:01ID:e3P89aGIテーブルの構造はどんな感じになるんだろうか?
PHPの側からテーブル作ったりできんのか?
なんかイメージするにスレッド毎にテーブルがあった方が
スッキリ管理しやすいようにおもうんだが、、、、、
でも、それじゃぁDB使う意味ないのか?
まぁ、厨房の独り言でし。
0260nobodyさん
02/12/06 16:19ID:???PHPに5万も標準の関数はありませんとか言ってみるテスト
>もし、2ch型の掲示板をPHP+RDBMで作る場合、
>テーブルの構造はどんな感じになるんだろうか?
1つの板につきスレッドテーブルと記事テーブルを各1個
0261でもさぁ
02/12/06 19:13ID:e3P89aGIそんだけでいいんだ。そうだよなぁDBでしかもリレーショナルだもんね(ワ。
漏れがPerlで作ったBBSはしこたまファイルが出来るから
dataやらのディレクトリをのぞく度に鬱になる。
0262nobodyさん
02/12/06 19:15ID:???Perl + CGI
って何?
0263nobodyさん
02/12/06 19:25ID:e3P89aGIそれは、もしかしてPerl + CGIの事ですか?
0265nobodyさん
02/12/06 22:09ID:???親スレで検索すればいいだけじゃん。テーブルを分ける必要は無いと思うのだが。。
0266でもさぁ
02/12/06 23:13ID:e3P89aGIスレッドのデータがグチャグチャに入ってて、そのグチャグチャを
DBは一生懸命検索しなきゃいけないわけでしょ。
もし、1スレッドに1テーブルだと検索する手間が省けてかなり
早くなりそうな気がするんだが・・・・。
メンテ的にも1掲示板で持てるスレッド数が決まっている場合、
さくっとテーブルの削除ができる。
ところでスレッドの順位のテーブルも必要なんじゃないか?
0267265
02/12/06 23:20ID:???検索し、並び替えるのが得意なDBにとって、順番やスレッドがぐちゃぐちゃなんてたいした手間じゃないと思うけどな。
0268nobodyさん
02/12/07 06:29ID:???まさか、perl == CGI とか思ってやしないよな。
と煽り返してみる。
0269workaholic
02/12/07 09:59ID:???あと、like で or な検索連発してみたり(しないか)。
つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、
ちょっと正気の沙汰とは思えない、とか。
1スレ=1テーブルって、どういう設計よ。
0270nobodyさん
02/12/07 10:08ID:???>ちょっと正気の沙汰とは思えない
禿同
0271workaholic
02/12/07 10:51ID:???"板コード"をpKeyにして、"スレコード"で別テーブルぶらさげて、
他になんか文言とか付随データをVARCHARでいくつか付けておいて、
その後その別テーブル上に「書き込みindex」をキー、スレコードはfKeyで、
カキコの中身はVARCHAR(256)位でまとめればいいんじゃないのかな。
0272nobodyさん
02/12/07 16:40ID:???テキストファイルだと削除が大変。
漏れは
1) 該当スレのログファイルをオープン
2) ファイル全体を配列に読み込む
3) 該当行を配列から削除
4) 元ファイルに書き込む
5) スレッドインデックスファイルの「レス数」を変更
という風にやっています。
なんかいい方法ありませんかね。
0273workaholic
02/12/07 17:43ID:???その処理って、ナニでやってるの?Perl?
オレは基本的にJava野郎で、Perlはすでにウロ覚え状態です。
前にServlet(&JSP)で、個人的にソレっぽいもの作った時は、
TextFileとして記録されるLogのフォーマットを、HTTPのPOST内容っぽい
(つまりバウンダリ文字列で区分する)形で記録するようにしました。
それ専用の汎用ParserClassを作って、Servletで使用って感じで。
でも、結局TextFileに記録って時点で、あまり凝った事はやりづらいです
よね。
Stringの塊を整形して、取り出す時は部分取得して...。
それでもPerlの場合正規表現は最初からあったけど、JavaにRegExpが標準パッケージ
として含まれたのって最近だし...。
やっぱDBがイイすね。楽。
0274nobodyさん
02/12/08 18:03ID:???1) 該当スレのログファイルをオープン
2) 新しいファイルを作る
ループ{
1) ログファイルから次の「1行ダケ」読み込む
2) 該当行じゃなければ、新しいファイルに行を書込む
}
3) 元ファイルを削除
4) 新しいファイルを元ファイル名に変更
5) 「レス数」とやらを変更
とやるのが一般的だよっと。
世間の参考書は全行読むのが多いよなあ。
出版社にはこの辺チト配慮してほすぃ。
0275272
02/12/08 19:00ID:???どもです。
確かにメモリ食いまくりですね。
私も最初は、
1) インデックスファイルなど小さいモノはそのまま読み込む
2) 大きいモノは1行づつ読み込む
としていましたが、
掲示板の内容をhtmlに書き出すときに、
<html>から</html>まで全部変数に入れて、
一気に書き出す。
という方法をとってからは、ファイル全部読み込むことにしました。
まあ、ログサイズは大きくならないようにしてますけど。
0276272
02/12/08 19:06ID:???たとえば「最新10レスを表示」する場合、
最初の設計時には
1) 最新10レスが何番目のレス(start)から何番目のレス(end)なのかを計算
2) ログファイルをオープン
3) 1行づつ読んで、(1)のstartにきたら内容を配列に読み込む
endにきたらファイルを閉じる
という風に考えていたのですが、
よく考えてみれば、(1)を計算するにはファイルをあけて何行あるかを
feof まで1行づつ読み込むループをして調べなくてはならないですね。
それなら最初から全部読み込んでしまえ。となったわけです。
それからstart、endを計算して、いらない部分を配列から消すと。
0277nobodyさん
02/12/08 19:54ID:???例えば、PHPで初めの10行をとばすなら、
$begin = 10;
while($rec = fgets($FP,'12345') and $begin) {$begin--;}
while($rec = fgets($FP,'12345')) {読み込みたい件数だけ配列に入れてループ抜ける}
Perlかもしれないから一応補足。
while($rec = <FH>) {$begin--; last if(!$begin);}
while($rec = <FH>){読み込みたい件数だけ読み込む}
てな感じでやりなって。
HDへのアクセス時間短縮&メモリ空間になるでしょ。
0278nobodyさん
02/12/08 22:51ID:fkqPp+lS板毎にファイルを2つ作りそれぞれ
A:書き込みに番号を付け1行にまとめて追記
B:スレッドの構造を1スレ1行に書き込み番号を連ねて収納
スレッドを表示する時はB内の所望の行を読み、それに基づきA内の行を吐く。
age処理はBの行の順番を入れ替える。レス削除はBの該当番号を消し、
スレッド削除はBの1行を消す。Aは出来るだけいじらない。
lockの手順とかしっかりしないと嵌る。
SQLはいじった事ないけどねヽ( ´ー`)ノ
0279nobodyさん
02/12/08 23:02ID:???read.cgiではseekするようにしてる。
0280nobodyさん
02/12/08 23:11ID:???2chの発言内容って、htmlタグを全て排除してるじゃないですか。
でも、http://www.yahoo.co.jp
は、別画面が出てくるように、http://***.2ch.net/"""
はスレッドを表示する…
それと、>>n はスレ内のレスを直接表示…と、
よく出来ていると思うのですが、これに近い処理をするPHPやPerlの
ソースはありませんか。Javaで書いてみたいのですが…もしくは、
同じ処理をするJavaソースがあれば教えて下さい。。。
PHPとPerlはうろおぼえでGoogle探しても色々あって、どれがいいのか、はて、、です。
0281nobodyさん
02/12/08 23:19ID:???0283272
02/12/09 16:55ID:???レスありがとうございます。
while($rec = fgets($FP,'12345') and $begin) で and $begin という使い方は知りませんでした。
これは便利ですね。早速使ってみます。
さて、上述の、「ファイルを舐めないと総レス数がわからないので、たとえば「最近10レス」が
どのレスからどのレスまでを計算するには、ファイルを舐めないといけない」を
上手く解決する方法はありますか? この問題さえ解決できれば、必要な行だけを配列に
読み込む方式に移行できます。
よろしくお願いします。
0284nobodyさん
02/12/09 18:37ID:???じゃあ Shift_JIS + html もいいのかw
誰も変だと思わないのか?
0285nobodyさん
02/12/09 19:07ID:???何故最新10レスを計算する必要があるのかナスカの地上絵よりも謎だが、
ツリー形式掲示板なら、記事追加時に記事の情報を別に記録しておくとか
最新記事がファイルの先頭に記録するタイプなら、最初の10件だけ読み込む
2ch式掲示板なら、書込み時にftellして、読み込み時にfseekする
固定長ファーマットにしてランダムアクセスする手もある
そもそも277と279が答え出してるだろ
0287nobodyさん
02/12/09 22:54ID:???別スレでも話題になってるが♪のならこのへん。perlだけね。
ttp://www.onpuch.jp/files/onpuch.zip
0288nobodyさん
02/12/10 01:21ID:???いっぱいファイル開いたり閉じたり面倒で気が遠くなりそうだったんで
DBにしました。DBでも面倒なので放置気味ですが。
2ch型作っても、書き込み少なくてスカスカで見苦しいサイトがほとんどだし
もっと一般人向けの良いアイディアの掲示板ってないですかね。
0290nobodyさん
02/12/12 16:16ID:vEZAWx5Mまだ居るのか期待してageっ!
0291289
02/12/12 23:48ID:???というわけで、ついでに1年以上前のことですが質問させてください。
>>95で
>BbsThread は自分のスレッドの全メッセージにアクセスでき、
てことは、BbsThreadは自分のスレッドの全メッセージを配列で持っているの?
それともメッセージ取得メソッドが呼ばれるたびにファイルを開いて読み込むのかな?
でもそうだとDBを使うかファイルを使うかで変わってくるからMesseageStoreのように
MessageReaderを複数種類用意するってこと??
0293nobodyさん
02/12/13 08:59ID:zYYQGitahttp://news2.2ch.net/test/read.cgi/newsplus/1039690102/l50
グローバルビジョンは、すべてのWebページに勝手に掲示板を作成
できるシステムを開発した。http://www.petitmedia.com/
ここのシステム、PHP+ PostgreSQLでできてるらしい。
0294289
02/12/13 20:00ID:???レスありがとうございます。やはり後者でしたか。
ということはThreadStoreやThreadReaderも複数用意するってことかな。
ああ、電動ナナシ氏作成の掲示板見てみたいなぁ。
0295あし
02/12/20 12:19ID:7MV1a4/S0296nobodyさん
03/01/09 16:27ID:???前に掲示板のクラス設計途中までやったよね
0297289
03/01/13 11:39ID:???http://tohoho.wakusei.ne.jp/soft/wbord.htm
みたいな掲示板作ってみませんか?
これなら簡単そうだし。
>>92 のメッセージクラスも流用できそうだし。
0298山崎渉
03/01/15 13:41ID:???0299nobodyさん
03/02/22 02:01ID:???0300山崎渉
03/03/13 17:13ID:???0301山崎渉
03/04/17 12:24ID:???0302山崎渉
03/04/20 06:09ID:???( ^^ )< ぬるぽ(^^)
■ このスレッドは過去ログ倉庫に格納されています