■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

read.cgi再開発スレ

356 : ◆cZfSunOs.U :04/11/29 03:01:15 ID:4/QiqQ6B
>>341 >>349 すみません......メーラが挙動不審で手間取りまして遅くなりました.
今お送りしました.

357 :FOX ★ :04/11/29 03:01:41 ID:???
何か おかしい?
普通に見えるが、、、

358 : ◆BFzK/mtqM2 :04/11/29 03:02:24 ID:3uDLu370
>>355
何度かリロードするとおかしくなりますね。。。。

359 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:03:49 ID:OjCpmQ+h
>>357
これは?
http://live8.2ch.net/test/read.cgi/liveanb/1101655005/l50

360 :root▲ ★ :04/11/29 03:04:29 ID:???
>>356
受け取りました。どもです。

>>357
こっちでは、えっちなのはいけないと思います。って出てる。

361 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:05:46 ID:ovI0quUo
何がおかしいかわからん。。。

362 :FOX ★ :04/11/29 03:06:23 ID:???
ふんふん

この辺は最新のにしてから DSO の性質を見つつ
read.c をぼちぼち触っていくという作戦かと、、

現状では リロードで直ると、

363 :root▲ ★ :04/11/29 03:07:05 ID:???
Sleipnirを起動しなおしたら直った、、、。
IEでも正常か。

>>359
正しく出るようです。

364 :FOX ★ :04/11/29 03:07:11 ID:???
>>361
たまに表示がぐたぐたにむなるようです。

メモリーの使い方とか、その辺だろうなと、

365 : ◆cZfSunOs.U :04/11/29 03:07:48 ID:4/QiqQ6B
う〜ん......何かエラーログに出てたりとか httpd が core 吐いたりとかしてますか?

366 :root▲ ★ :04/11/29 03:10:01 ID:???
core吐きはないみたいですね。
エラーログもそれっぽいのはないみたい。

367 : ◆cZfSunOs.U :04/11/29 03:17:59 ID:4/QiqQ6B
こちらでもソース見ながら原因考えてみます......

368 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 03:22:00 ID:TtSvBU/v
>>359
l50でもリロードするとダメになるときがありますね・・・

369 : ◆cZfSunOs.U :04/11/29 03:22:04 ID:4/QiqQ6B
これってどの板・スレでも起こりますかね? それとも特定の板・スレのみでしょうか?

370 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:25:49 ID:WHY/0MpL
今試して見たら板・スレに関係なく起こってますな

371 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 03:26:49 ID:TtSvBU/v
>>369
適当にいくつか見ましたが板もスレもレス指定も関係なく出てくるようです

>936 名前の前に改行)
■掲示板に戻る■</a> <a href=./>全部</a> <a href=l50>最新50</a><p><font size=+1 color=red><dd> <a href="../test/read.cgi/liveanb/1101653051/933" target="_blank">
>>933</a> <br> わざととらせたということはないだろうな。あの表情だったら <br><br>
<dt>936 名前:<a href="mailto:sage "><b>名無しステーション </b></a> :04/11/29 02:46:09 ID:055hkqユM </font><dl></dl><hr><a href="../../../../livejupiter/">掲示板に戻る</a>

372 :root▲ ★ :04/11/29 03:29:41 ID:???
これでdso化したら、プログラムをリエントラント(再入可能)に作る必要がある、ってことなんだろうか。

# ちとねむいっす。ねたら負け組だけど、明日は普通に会社あるし。
# とりあえずふろ。

373 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:30:30 ID:uF/8zKyA
おつかれさまー

374 :FOX ★ :04/11/29 03:33:26 ID:???
eq

375 :FOX ★ :04/11/29 03:33:42 ID:???
でかっ

376 :FOX ★ :04/11/29 03:34:58 ID:???
まだ揺れとる

377 :▲ 某ソレ511 :04/11/29 03:36:34 ID:oxD2FF+l
釧路で5強っすか、、かなり大きいですね、、

378 : ◆cZfSunOs.U :04/11/29 03:40:53 ID:4/QiqQ6B
>>372 reentrant にはしてあります(っていうか,書き換え作業の大部分はそこでしたので).
まぁ見落としなどはあるかも知れませんが......

あと考えられるのは......httpd のビルド時に例えば -D_XOPEN_SOURCE=500 などの
マクロ定義はしてあるのでしょうか? こういうもので変数型が変わるなどの影響が
出ることもあり得るので.

apxs -q CFLAGS CPPFLAGS

を実行して確認して,このあたりのフラグは bbs.so ビルド時もそろえた方がいいかと思います.

379 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 03:44:45 ID:TtSvBU/v
datが直接表示

>04/11/29 02:11:59 ID:sCrhvqx+<> 漏れは白を応援するぜ!! <>
名無しでいいとも!<><>04/11/29 02:12:02 ID:hz69xFMh<> ヤナはフルみたい <>
名無しでいいとも!<><>04/11/29 02:12:04 ID:hDPLKkje<> <a href="../test/read.cgi/livecx/1101659114/707" target="_blank"ユM </font><dl></dl><hr><a href="../../../../livejupiter/">掲示板に戻る</a>

380 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:46:58 ID:Ht4o1cs1
他の板とか他のスレのログが出てくるんだよね。

381 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:52:50 ID:/5ypnFCQ
>>376
地震は地震板でとあなた自身が自信をもって言っていませんでしたか?

382 :FOX ★ :04/11/29 03:54:32 ID:???
いいえ

383 :▲ 某ソレ511 :04/11/29 03:56:30 ID:oxD2FF+l
それと正反対に、
地震の時はすべての板でやれといってた気がするが、、

384 :FOX ★ :04/11/29 03:58:03 ID:???
んだんだ

385 :動け動けウゴウゴ2ちゃんねる :04/11/29 03:59:57 ID:kU5NuXM1
取りあえず狐さんは無事だか動物的カン無しと φ(−−)

386 :動け動けウゴウゴ2ちゃんねる :04/11/29 04:01:35 ID:YF2fIfwl
★実況報告スレ 7★
>>739
地震系での鯖増強はなしってことか、、、乙です。

746 名前:見習い▲▲ ★ 投稿日:04/09/06 01:05 ID:???
気象庁とか国がやれはせいいんでないの?
野球実況もおなじだけど、なんでも2ちゃんねるで出来るというのは
無理だと思う。 何かをあきらめれば何かが出来るとは思うけど、

実況全部廃止して地震にそなえるとか、

387 :動け動けウゴウゴ2ちゃんねる :04/11/29 04:03:39 ID:/5ypnFCQ
I'm sorry.
It was my misapprehension.


388 :動け動けウゴウゴ2ちゃんねる :04/11/29 04:05:39 ID:Ht4o1cs1
というか
>自身が自信
これが書きたかっただけっしょ?w

389 :FOX ★ :04/11/29 04:38:31 ID:???
なんとなく
直ったかも

>>379 とか >>353-

390 :ヾ(゚パ)ノ ◆f0.zuburi6 :04/11/29 04:43:56 ID:O984QGRN
>>389 おつおつ
win2000pro IE6sp1にて確認。
5回ほどリロードしてみたけどいいみたい。

391 :▲ 某ソレ511 :04/11/29 04:45:21 ID:oxD2FF+l
おっ、>>353 なおたね。
おつです、おつです。。

392 : ◆cZfSunOs.U :04/11/29 04:47:07 ID:4/QiqQ6B
>>389 お疲れさまです.こちらでも正常に見えるようです.
# こんな時間ですが,私も気になって......

何か手を加えたとしたら,どんなことでしたでしょうか?

393 :FOX ★ :04/11/29 04:48:53 ID:???
RAWモードとか使用していないのを外していったら
直った出ス。

つまり 基本的にはread2ch.h の #define をコメントにしていっただけです。

もともと潜在的にあるバグの気がします。

394 : ◆cZfSunOs.U :04/11/29 04:51:26 ID:4/QiqQ6B
>>393 なるほど......ともあれ,お疲れさまでした.

395 :むむむ@寝床 P061204003013.ppp.prin.ne.jp :04/11/29 04:56:21 ID:7QDQ2sad
なるほどそういう事でしたか。
おつでした。
てなわけで、おやすみなさい。

396 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 04:56:27 ID:TtSvBU/v
乙です
問題梨でした

397 :むむむ@寝床 P061204003013.ppp.prin.ne.jp :04/11/29 05:06:48 ID:7QDQ2sad
忘れないうちにメモ。
これ入れたら、read.cgiの時はKeepAliveを切らない方がいいのかも。

398 :FOX ★ :04/11/29 05:33:40 ID:???
またまた 質問しておこう

この場合 read,cgi@live8 の出力は mod_deflate で圧縮されるですか?

399 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 05:49:35 ID:TtSvBU/v
圧縮されているようです
telnet live8.2ch.net 80
Trying 206.223.151.225...
Connected to live8.2ch.net.
Escape character is '^]'.
GET /test/read.cgi/livejupiter/1101557599/1 HTTP/1.0
Host: live8.2ch.net
Accept-Encoding: compress, gzip

HTTP/1.1 200 OK
Date: Sun, 28 Nov 2004 20:48:35 GMT
Server: Apache/2.0.52
Last-Modified: Sun, 28 Nov 2004 18:50:44 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1010
Connection: close
Content-Type: text/html

(以下バイナリ)

400 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/11/29 05:50:17 ID:TtSvBU/v
追記:どのモジュールで圧縮されているかまでは・・・・スンマソ

401 :▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/29 07:16:10 ID:mfH1gp4Z
おおおおーいよいよmod_cgidso投入ですかー
狐さん&むむむさん&◆cZfSunOs.Uさん乙ですっ!

しかーし 祭りに乗り遅れた・・・orz

402 :root▲ ★ :04/11/29 14:20:00 ID:???
>>398-400
DEFLATE text/html と指定してあるので、従来どおり mod_deflate は有効です。

403 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:07:14 ID:s9e0/XRp
200で圧縮かあ・・・

404 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:08:33 ID:YUCTKKXt


405 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:11:39 ID:oZ/fVKJl
live8、IEでスレッド開くと書き込み欄の上に、
10:00PM - 02:00AM の間一気に全部は読めませんって出るけど、
今5:00PMでその状態なってますよ。

406 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:12:32 ID:aLu3keU+
そういやそんな機能もあったっけね……。

407 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:23:36 ID:ggfp/YhU
(10:00PM - 02:00AM の間一気に全部は読めません)
鯖の時計機能がぬるぽ

408 :ひろゆき@どうやら管理人 ★ :04/11/29 17:24:55 ID:???
おぉ。ついに?


409 :▲ 某ソレ511 :04/11/29 17:26:23 ID:oxD2FF+l
>>405
最近、その機能消えてたような気がするけどなぁ、、

410 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:29:32 ID:LX/x7hhq
cgiの中の人が元に戻ったに100ペセタ

411 :FOX ★ :04/11/29 17:33:48 ID:???
転送量問題に苦しむと -> 細切れに送って乗り切る
サーバ負荷に苦しむと -> 一気に送って乗り切る

さて、今はどうすべきか・・・

という岐路きろ

412 :動け動けウゴウゴ2ちゃんねる :04/11/29 17:56:35 ID:LX/x7hhq
一気に送って流れに乗り遅れるに

413 :動け動けウゴウゴ2ちゃんねる :04/11/29 18:07:59 ID:nRC31bTa
細切れに一気に送って乗り切る。

414 :動け動けウゴウゴ2ちゃんねる :04/11/29 18:10:27 ID:VhIBWS7o
一気に乗り送って細切る。

415 :動け動けウゴウゴ2ちゃんねる :04/11/29 18:14:26 ID:Z+0ux1C/
土石流。

416 : ◆cZfSunOs.U :04/11/29 18:25:46 ID:4/QiqQ6B
時間のずれは......httpd 起動時に TZ=JST-9 にすることは可能でしょうか?
(httpd.conf での SetEnv は効きません)
cgidso 版の read.cgi から putenv() を実行すると httpd プロセスの環境を
いじることになり,これはちょっとおっかないので,その部分のコードは外したのですが.


あと,"Special thanks〜"のところはあまり目立つのも恥ずかしいので,

    <span title="Special thanks〜">read.cgi ver8.01+ (04/11/29-)</span>

ぐらいにして頂ければ......

417 :未承諾広告※ ◆TWARamEjuA :04/11/29 23:09:30 ID:l5g8l4lr
恥ずかしいキャップ名を戴くとか(w

418 :▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo :04/11/30 09:43:52 ID:bj243a2Z
>>416-417
トリップからSolaris10とか(ぇ


419 :動け動けウゴウゴ2ちゃんねる :04/11/30 10:57:03 ID:t9yH/Y2Y
◆cZfSunOs.U さんが書くとfusianasanになるとか(

420 :動け動けウゴウゴ2ちゃんねる :04/11/30 16:21:57 ID:Gq7s/YGs
>>419
それウラヤマスィ・・・

421 :動け動けウゴウゴ2ちゃんねる :04/11/30 17:40:10 ID:M2I3YJNd
http://domo2.net/system/ver.html
read.cgiの8.01+が・・・w

422 :動け動けウゴウゴ2ちゃんねる :04/12/02 17:53:17 ID:XkytQdMz
>>421チョトワラタな。こりゃ。

423 :動け動けウゴウゴ2ちゃんねる :04/12/04 23:26:16 ID:yNyuvRga
801…

424 :FOX ★ :04/12/04 23:46:09 ID:???
質問です、

dso で動かしている read.cgi ですが、寿命はどれくらいなんでしょうか
あと グローバルな変数を定義したら、共有して使えますか?

425 :動け動けウゴウゴ2ちゃんねる :04/12/05 01:26:14 ID:kMNF4iCl
あまりでしゃばるのもアレなんで、分かる範囲で。

寿命は、apacheの各プロセスと一緒です。
つまり、現在のpreforkだと、MaxRequestsPerChildによって左右されます。

変数の共有は、MPMがpreforkだと各プロセスが独立するので、不可能です。
また、マルチスレッドなMPMにしても、「全体で唯一の変数」にはなりません。
(単に同一プロセス内でのみの共有です)

共有変数や永続的なデータを持たせるには
共有メモリ(やmmap等)で明示的に共有する領域を作成したり
aprのAPIを利用したりする必要があります。


全体にわたる設定やデータを保持したり共有したりするなら
場合によっては、専用サービス(daemon)を作って
apache自体はproxy動作するだけにさせた方が効率がいいかもしれません。
read.cgiと.dat読み込みに特化したhttpdを作るというイメージで。
(servletを動かすのにApacheとTomcatと連動させるのと同じような感じ)

426 :root▲ ★ :04/12/05 06:51:14 ID:???
>>424
>>425 のとおりです。(>>425さん、的確な説明ありがとうです)

dso な read.cgi は httpd に完全に組み込みになります。
今の FreeBSD 5.3R 系のサーバだと、MaxRequestsPerChild は 1000000 にしてあるので、
100万回httpリクエストを処理すると(bbs.cgiやdat直読みも含む)、httpdが生まれ変わります。

変数の共有はできないです。理由は >>425 の第3パラグラフのとおりです。
で、マルチスレッドMPMは昔試していまいちだったので、現在は通常のprefork MPMにしてあります。

427 : ◆cZfSunOs.U :04/12/05 07:55:51 ID:o4+M5XEu
bbs.cgi で今やろうとしているのと同じように,設定や広告などのデータを
1回読んだ後 persistent に保持させたいということなのかな,と想像.
そうであるとすれば,server pool にでも突っ込んでおけばいいのではないかと.

428 :FOX ★ :04/12/05 23:19:11 ID:???
>>427
そうそう それですよん
やりたいのは、

現状のread.cgiは一切ファイルを見に行かない(datは別よん)ように
しているのですが、もし可能ならまた夢が広がるってことで、
完全に共有でなくても、bbs.cgiのようにたまに読めば良いなら
使えるな! と、

429 :動け動けウゴウゴ2ちゃんねる :04/12/05 23:32:23 ID:v0mP+Gnz
うはwwwwww夢がひろがりんぐwwwwwwwwwwwwwwwwwwww

430 :root▲ ★ :04/12/06 12:53:21 ID:???
>>428
ひ(りゃ が広告(例の右上の1行)を見に行くようにしたんじゃなかったかしら。

431 :動け動けウゴウゴ2ちゃんねる :04/12/06 13:36:51 ID:eqq5M8TA
ex7で
dat落ちのスレッドの表示が
削除と同じ状態になるんですが、、

例)
http://ex7.2ch.net/test/read.cgi/entrance/1102162144/

> read.cgi ver8.01+ (04/11/29-) 「Special thanks ◆cZfSunOs.U さん
> 過去ログ倉庫にもありませんでした。
> 問い合わせても見つかる可能性はほとんどありません。

過去ログ倉庫にあるかどうかの参照は直るでしょうか。

432 :root▲ ★ :04/12/06 13:45:44 ID:???
>>431
そのうち、ってかんじかなと。

今のread.cgiは●ができる前のものをベースにしているので、
こうなるです。

OpenJaneで該当スレを読んでみましたが、ちゃんと読めたです。

433 :ひろゆき@どうやら管理人 ★ :04/12/06 13:49:40 ID:???
>>430
正解。。

434 :FOX ★ :04/12/06 13:59:07 ID:???
>>430
それを実現しつつ常駐化して
さらに毎回呼ぶのは避けようというきかくです

435 :動け動けウゴウゴ2ちゃんねる :04/12/06 14:02:42 ID:s5lFRPnO
>>427
Server poolでも良いんだけど、その辺の設定情報的な物は
どちらかというとApacheの設定情報管理用のフレームワークに
のっけて情報管理した方が良さげ。要は
<Files read.cgi>
 SetHandler dso-script
 SetCgisoValue key value
</Files>

みたくできるように、command_rec型でディレクティブ作る式で。

この場合はmod_cgiso側で設定情報を持って、
loadするDSOに渡すみたいな感じでがよいかなと。

436 :動け動けウゴウゴ2ちゃんねる :04/12/06 15:22:31 ID:eqq5M8TA
>>432
了解しましたー。
ぼちぼちで良いのでお待ちしてます。

乱立スレを見に行くか、、、

437 :とすげ ◆eeDSEEDXRE :04/12/06 16:31:28 ID:MD44dezB
とりあえず、記念ウンコ。

438 :動け動けウゴウゴ2ちゃんねる :04/12/06 22:08:14 ID:sWbcYoEx
のぐそはいかんな

439 :動け動けウゴウゴ2ちゃんねる :04/12/06 23:00:24 ID:Dlimln8Q
dsoとかなんとかで調子良くなるんなら
live15に入れて人大杉解除してくれよん

440 : ◆cZfSunOs.U :04/12/07 07:25:30 ID:4/kWaSl/
>>435 設定情報は確かにそういうやり方の方がスマートかも知れませんね.
ただ,それなら今ある仕組みのままでも,SetEnv 使えば DSO プログラム側から
apr_table_get(r->subprocess_env, "key") で取り出せます.

一方,広告テキストなどはさすがに httpd.conf に書き連ねるのは......
ってことで,こちらはファイルから読み込んで server pool に突っ込んでおく
のが良さそうですね.だいたいこんな感じでしょうか.
----[read.h に追加]---------------------------------------------------
#include <pthread.h>
#include "apr_pools.h"
#include "apr_thread_rwlock.h"
----[read2ch.h に追加]------------------------------------------------
#define AD_FILENAME "ad.txt"
#define AD_CHECK_INTERVAL 60
----[read.c はこんな感じに]-------------------------------------------
    :
typedef struct {
    apr_thread_rwlock_t *rwlock;
    volatile apr_time_t lastchecked, mtime;
    apr_pool_t *pool;
    apr_mmap_t *m;
} ad_pool_t;
    :
static ad_pool_t *get_ad_pool(request_rec *r, const char *ad_key)
{
    /* APR mutex には静的初期化マクロが用意されていないので,ここは pthread mutex を使用 */
    static pthread_mutex_t ad_mutex = PTHREAD_MUTEX_INITIALIZER;
    ad_pool_t *ad_pool, **ad_poolp = &ad_pool;
    apr_pool_t *p = r->server->process->pool;

    apr_pool_userdata_get((void **)ad_poolp, ad_key, p);
    if (!ad_pool) {
        pthread_mutex_lock(&ad_mutex);
        apr_pool_userdata_get((void **)ad_poolp, ad_key, p);
        if (!ad_pool) {
            ad_pool = apr_palloc(p, sizeof *ad_pool);
            ad_pool->lastchecked = ad_pool->mtime = 0;
            if (apr_thread_rwlock_create(&ad_pool->rwlock, p)
                || apr_pool_create(&ad_pool->pool, p))
                ad_pool = NULL;
            else
                apr_pool_userdata_set(ad_pool, ad_key, apr_pool_cleanup_null, p);
        }
        pthread_mutex_unlock(&ad_mutex);
    }

    return ad_pool;
}

441 : ◆cZfSunOs.U :04/12/07 07:27:44 ID:4/kWaSl/
static void update_ad_pool(global_vars_t *gv, request_rec *r, ad_pool_t *ad_pool)
{
    char *adfile;
    apr_file_t *f;
    apr_finfo_t finfo;

    if (gv->t_now - ad_pool->lastchecked < AD_CHECK_INTERVAL * APR_USEC_PER_SEC)
        return;

    apr_thread_rwlock_wrlock(ad_pool->rwlock);

    ad_pool->lastchecked = gv->t_now;
    adfile = apr_pstrcat(r->pool, gv->cwd, "../", gv->zz_bs, "/", AD_FILENAME, NULL);

    if (apr_stat(&finfo, adfile, APR_FINFO_MIN, r->pool)) {
        ad_pool->mtime = 0;
        apr_pool_clear(ad_pool->pool);
    }
    else if (finfo.mtime > ad_pool->mtime
            && gv->t_now - finfo.mtime >= APR_USEC_PER_SEC) {
        apr_pool_clear(ad_pool->pool);
        ad_pool->mtime = apr_file_open(&f, adfile, APR_READ, APR_OS_DEFAULT, r->pool)
                        || apr_file_info_get(&finfo, APR_FINFO_MIN, f)
                        || apr_mmap_create(&ad_pool->m, f, 0, finfo.size, APR_MMAP_READ, ad_pool->pool)
                        ? 0 : finfo.mtime;
    }

    apr_thread_rwlock_unlock(ad_pool->rwlock);
}
    :
int dso_main(request_rec *r, int argc, char **argv)
{
        :
    char *ad_key;
    ad_pool_t *ad_pool;
        :
    ad_key = apr_pstrcat(r->pool, "read.ad.", gv->zz_bs, NULL);
    ad_pool = get_ad_pool(r, ad_key);
    if (ad_pool) {
        update_ad_pool(gv, r, ad_pool);
        apr_thread_rwlock_rdlock(ad_pool->rwlock);
        if (ad_pool->mtime)
            ap_rwrite(ad_pool->m->mm, ad_pool->m->size, r);
        apr_thread_rwlock_unlock(ad_pool->rwlock);
    }
        :
}
----------------------------------------------------------------------

442 :435 :04/12/07 18:10:54 ID:01+8LArA
>>440
なるほど。毎回apr_stat()が走る点がちょっとだけ気になってみたけど、
べつに気にする必要ないかぁ。

あれ、Apache 2.0.xって汎用的なデータ共有リポジトリ的な
APIってなんかありませんでしたっけ?
いっそserver_poolじゃなくてapr_shm_create()あたり使っとけば、
workerモデルとpreforkモデル両方で、動的に情報をshareできて良いんじゃないかしら。
とか言い出してみるテスト。

443 : ◆cZfSunOs.U :04/12/07 19:37:22 ID:4/kWaSl/
>>442
>なるほど。毎回apr_stat()が走る点がちょっとだけ気になってみたけど、

ん〜と,http://qb5.2ch.net/test/read.cgi/operate/1101984763/620 の人が言っていたようなやり方なんですが.
    if (gv->t_now - ad_pool->lastchecked < AD_CHECK_INTERVAL * APR_USEC_PER_SEC)
        return;
で,インターバル期間内は stat もとらずに返してますから.

>あれ、Apache 2.0.xって汎用的なデータ共有リポジトリ的な
>APIってなんかありませんでしたっけ?

そうなんですか? まぁうまい仕組みがあればそれを使った方がいいのでしょうけど.

>いっそserver_poolじゃなくてapr_shm_create()あたり使っとけば、
>workerモデルとpreforkモデル両方で、動的に情報をshareできて良いんじゃないかしら。

これは,私が作った別のモジュール (mod_authz_iplist) でも検討したんですが,
APR ではインタープロセスな rwlock がサポートされてないので見送ってたんですが,
まぁ APR じゃなくて pthread のを使ってしまえばいいのかも知れません.
とりあえず FreeBSD ではサポートされてるようなので.
http://www.freebsd.org/cgi/man.cgi?query=pthread_rwlockattr_setpshared&manpath=FreeBSD+5.3-RELEASE+and+Ports

444 : ◆cZfSunOs.U :04/12/07 20:30:18 ID:4/kWaSl/
......と書いて思ったのだけど,>>440-441 のコードでも mmap() 使ってるんで
ファイルイメージは同一のものを共有してるんですよね.むしろ共有メモリ使っても
そこにファイル内容をコピーするとかでは mmap() 使う意味がなくなってしまうし.

445 :FOX ★ :04/12/13 20:12:59 ID:???
グローバルな変数の話しの続きですが (dso)

1) 普通に共有メモリを使ってやっても問題ない。
2) それならばdaemonを作っていろいろやらせて
  read.cgi からは参照程度にしたほうが効率よい

という話しの流れっすよね?


446 :FOX ★ :04/12/13 20:15:22 ID:???
広告や規制情報ファイルの読み込みの節約もさることながら
たとえば read.cgi が呼ばれたら count++; とやり一日の起動数なんかを
調べちゃったりするのはこの(共有メモリ)延長線上で考えてokってことかな?

あんましポータビリティとかはもはや気にすることもない段階?

447 : ◆cZfSunOs.U :04/12/13 20:54:34 ID:AlKwzA+l
>>445-446 なるほど......

>たとえば read.cgi が呼ばれたら count++; とやり一日の起動数なんかを調べちゃったりする

こういったことをやるなら,確かに全体でデータを共有する必要がありますね.
で,あとは共有メモリ使うのか専用デーモン使うのか,ってところでしょうか.
例えば >>425

>apache自体はproxy動作するだけにさせた方が効率がいいかもしれません。
>read.cgiと.dat読み込みに特化したhttpdを作るというイメージで。

のようなことをやるとして,

・ read.cgi 宛のリクエストは mod_proxy でバックエンドに渡す.
・ バックエンドは DSO 版 read.cgi が動く必要最低限のモジュールを組み込んだ httpd.
・ そのバックエンド httpd はマルチスレッド MPM を使用して子プロセス数は1のみ.
  (これで共有メモリを使わずに1プロセス内で完結させられる)

のような感じで行けるでしょうか......

448 : ◆cZfSunOs.U :04/12/13 21:03:37 ID:AlKwzA+l
>>426

>で、マルチスレッドMPMは昔試していまいちだったので、現在は通常のprefork MPMにしてあります。

というのは,当時より OS のスレッドサポートが改善されていれば行けるのかな,
っていう気もしないではないですが,どうなんでしょうか.

ついでに,バックエンド httpd では起動時に TZ=JST-9 にしておけば
時間のずれの問題(>>405-416)も対応できるかな,と.

449 :root▲ ★ :04/12/13 22:37:23 ID:???
>>448
スレッドサポートは、かなり更新されている模様。
しかし、SpeedyCGIがworker MPMに対応してないんでしたっけか。

450 : ◆cZfSunOs.U :04/12/13 22:47:05 ID:AlKwzA+l
>>449
>スレッドサポートは、かなり更新されている模様。

それなら期待できるかも知れませんね.

>しかし、SpeedyCGIがworker MPMに対応してないんでしたっけか。

それが問題で......これがなければ本体の httpd 自体を worker MPM で動かして
しまえばいいんでしょうけど,とりあえずの対応として read.cgi の処理だけ行う
httpd を worker MPM でバックエンドで動かす(本体から proxy で渡す)
のはどうかな,と......

451 :root▲ ★ :04/12/13 22:48:26 ID:???
>>450
> とりあえずの対応として read.cgi の処理だけ行う
> httpd を worker MPM でバックエンドで動かす(本体から proxy で渡す)
> のはどうかな,と......

お、これってどうやればいいのかしら。
バックエンドというぐらいで、サーバ内部のみで動かすかんじなのかな。

452 : ◆cZfSunOs.U :04/12/13 22:53:24 ID:AlKwzA+l
>>451
バックエンドの httpd は別ポートで立ち上げて,本体側からは
localhost のそのポートに proxy で渡す,って感じですね.

453 :root▲ ★ :04/12/13 22:57:12 ID:???
>>452
なるほど、localhost:なんちゃら とかでやればいいと。
そいつには、違う httpd.conf をくべればいいというかんじですね。

454 : ◆cZfSunOs.U :04/12/13 22:59:22 ID:AlKwzA+l
>>453
そうですね.MPM が違うので httpd も別になりますが.

455 : ◆cZfSunOs.U :04/12/13 23:33:28 ID:AlKwzA+l
ん〜......逆に本体側を worker MPM で動かしてバックエンドを prefork MPM にして,
perl CGI 宛のリクエストを proxy でバックエンドに渡す,っていうのもありかな.
これなら静的コンテンツも worker MPM で処理できることになるんで.

235KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30