■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
read.cgi再開発スレ
- 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 で処理できることになるんで. 
 
- 456 :root▲ ★ :04/12/13 23:35:47 ID:???
 -  >>455 
 お、これってうまくやると、 
 Perl CGI(端的にはbbs.cgi)をうまく流入制限できたりするのかしら。 
 
- 457 : ◆cZfSunOs.U  :04/12/13 23:37:59 ID:AlKwzA+l
 -  >>456 そうかも知れませんね. 
 
- 458 :root▲ ★ :04/12/13 23:56:19 ID:???
 -  あ、でもこれ前に考えたのと同じか、、、。 
 そのときってリモートホストとか、ちゃんと保存されましたっけ。 
  
 というか、バックエンド側httpdにそのへんを渡せばいいのかな。 
 でも、仕組みが必要な気もすこし。 
 
- 459 :動け動けウゴウゴ2ちゃんねる :04/12/14 00:47:26 ID:CgkyDKrD
 -  >458 
 mod_rpaf-ap2 
 を応用すれば良いのでは? 
 
- 460 : ◆cZfSunOs.U  :04/12/14 20:03:45 ID:7v0a8z4f
 -  >>458 要するに,バックエンド側 httpd から呼び出した bbs.cgi 等から 
 REMOTE_ADDR を参照した際に 127.0.0.1 ではなくて本来のアクセス元が 
 得られるように,ということですよね? フロントエンド側 httpd で 
 reverse proxy モードで mod_proxy を使えば X-Forwarded-For 
 リクエストヘッダが付加されます.で,バックエンド側 httpd で 
 >>459 の mod_rpaf ( http://stderr.net/apache/rpaf/ ) を使えば 
 本来のアクセス元が REMOTE_ADDR に設定されます. 
  
 なお,元のリクエストに X-Forwarded-For ヘッダが含まれている場合は 
 ", "で区切って付加される形になります.もし bbs.cgi で 
 X-Forwarded-For を串判定等に利用しているのなら,", "で区切られた 
 2つ以上の IP アドレスが設定されていれば元のリクエストに 
 X-Forwarded-For が含まれていたということになりますので, 
 それに沿って処理すればいいかと思います. 
 
- 461 :動け動けウゴウゴ2ちゃんねる :04/12/15 22:40:48 ID:fqjSgQsh
 -  ちょっと質問 
 read.cgiのrawモードは廃止なんですか? 
 
- 462 :root▲ ★ :04/12/16 00:26:47 ID:???
 -  >>461 
 RAWモードって、最近だとどのへんのやつが使ってましたっけ。 
 
- 463 :動け動けウゴウゴ2ちゃんねる :04/12/17 02:22:31 ID:T9G3OSfg
 -  旧版kage(かちゅーしゃ)で使われてた。他の専ブラは知らない。 
 俺は最新版kageにraw読みこみ機能をつけて、 
 適宜dat直読みと切り替えられるようにしている。 
 ググったら現在rawモードはおまけ機能のようなので、 
 使うなとか廃止とか言われればそれまでだが・・・ 
 
- 464 :動け動けウゴウゴ2ちゃんねる :04/12/20 08:41:30 ID:wnDepaKQ
 -  今は知らんけど、iMonaの一部中間鯖が使ってたはず。 
 
- 465 : [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる :04/12/21 05:34:29 ID:/ZYSbzoV
 -  実際過去ログ倉庫にあるのにエラーが出ます 
  
 そんな板orスレッドないです。 
  
 1 名前:read.cgi ver8.01+ (04/11/29-) 「Special thanks ◆cZfSunOs.U さん」投稿日:2001/04/12(木) 15:11 
 そんな板orスレッドないです。 
  
 過去ログ倉庫にもありませんでした。 
 問い合わせても見つかる可能性はほとんどありません。 
 
- 466 :動け動けウゴウゴ2ちゃんねる :04/12/23 03:35:16 ID:axXC9shI
 -  >>465 
 >>431-432 
 
- 467 :FOX ★ :05/01/03 03:29:54 ID:???
 -  少しすすんだんだが、 
  
 名前欄って緑じゃなかったっけ? 
 <font color=green> で強引に緑にするんだっけ? 
 
- 468 :動け動けウゴウゴ2ちゃんねる :05/01/03 04:20:30 ?# ID:???
 -  今はそうしてるね、 
 CSSでまとめて色指定してもいいかもね、 
 
- 469 :FOX ★ :05/01/03 05:27:45 ID:???
 -  ■ read.cgi(DSO味)の巻 part1 (2004/12/01-) 
 http://dso.2ch.net/test/read.cgi/myanmar/1101888913/ 
  
 テストしてちょ 
 
- 470 : ◆cZfSunOs.U  :05/01/03 12:28:16 ID:yt/ZsWUR
 -  以前も名前欄の色は <font> タグ使わずに CSS 使ったらどうかという話もあったのですが, 
 当時は CSS 未対応ブラウザのことも考慮して見送りになったということでしたが,今なら 
 CSS 未対応ブラウザのことはあまり考えずに CSS 使ってしまってもいいかも知れませんね. 
  
 あと, 
  
 >time[2545861248] LastModifyed 今回は無しの方向で、 
  
 Last-Modified なしということは,ブラウザのキャッシュを効かせず毎回読み込ませる 
 という方針でしょうか? time の表示もおかしくなっているようですが, 
 apr_time_t はマイクロ秒単位の 64-bit 整数です.printf 文のフォーマット指定は 
 ILP32 なら %lli,LP64 なら %li かと. 
 
- 471 :root▲ ★ :05/01/03 16:24:58 ID:???
 -  ということで、news19 でベータテスト開始へ。 
  
 【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part16 
 http://qb5.2ch.net/test/read.cgi/operate/1102087698/615- 
 
- 472 :動け動けウゴウゴ2ちゃんねる :05/01/03 16:30:32 ID:LXxSW5sT
 -  >>471 
 500エラーのようで。 
 http://qb5.2ch.net/test/read.cgi/operate/1084445786/944 
 
- 473 :root▲ ★ :05/01/03 17:39:54 ID:???
 -  2005年番 read.cgi 開発中。。。 何かあったら報告よろしくです。 FOX ★ 
 みゃんまー http://dso.2ch.net/myanmar/ 
  
 番すか、、、。 
 
- 474 :FOX ★ :05/01/03 17:42:18 ID:???
 -  ありりっ 
 
- 475 :FOX ★ :05/01/03 21:00:27 ID:???
 -  現在 新しいread.cgi は 
 dso/ex7/ex9/live8/news19 に入っています。 
  
 今までのところ、悪さはしていない予感。 
 
- 476 :FOX ★ :05/01/03 21:05:33 ID:???
 -  次はいよいよ 広告関係なんだが、、、 
 なるべく広告定義ファイルを読まないように実装したいなぁと 
 思っているけど出来るべか。 
  
 また同じような事を聞きますが、 
 dso を使った場合。 read.cgi のプロセスは複数起動される。 
 何個起動されているかは知ることが出来るがコントロールする事は出来ない。 
 read.cgiプロセス間に相互に関連性はない。 
  
 この辺が SpeedyCGI の時とは違っているわけだな。 
  
 この認識であってます? (言葉の使い方等も違っていたら突っ込んで欲しい) 
 
- 477 : ◆cZfSunOs.U  :05/01/03 22:42:16 ID:yt/ZsWUR
 -  >>476 
 >dso を使った場合。 read.cgi のプロセスは複数起動される。 
  
 read.cgi は httpd プロセスと同一メモリ空間に読み込まれるので, 
 read.cgi そのもののプロセスは起動されません.httpd プロセスが複数なら 
 read.cgi(が読み込まれている)プロセスも複数ということにはなります. 
  
 >何個起動されているかは知ることが出来るがコントロールする事は出来ない。 
  
 httpd プロセスをコントロールすることが即 read.cgi(が読み込まれている) 
 プロセスのコントロールということになります. 
  
 >read.cgiプロセス間に相互に関連性はない。 
  
 相互の関連性というのが変数共有等を指しているのなら, 
 上の方で言われている通りですね. 
 
- 478 : ◆ToT/VojxVY  :05/01/03 22:45:46 ID:/tYpXQ+q
 -  みゃんまーでテストしてきましたー。 
 最新レス番を指定すると全レスが表示されますよ。 
 
- 479 :root▲ ★ :05/01/03 22:46:47 ID:???
 -  read.cgiは完全にhttpdと同化して動く、ということですね。 
  
 つまり、prefork(現在の2chのサーバのhttpdの設定)でhttpdの最大数が768個なら、 
 768個までread.cgiが同時に動く(可能性がある)と。 
 
- 480 :FOX ★ :05/01/03 22:47:11 ID:???
 -  何回もすみません >>477 
  
 どうしますかねぇ 
  
 起動毎に広告定義ファイルを読まなくても良い方法。 
 
- 481 :FOX ★ :05/01/03 22:48:35 ID:???
 -  現在は ソース埋め込みです。 
  
 >>479 
 live16 もdso化しようかと、 
 
- 482 :root▲ ★ :05/01/03 22:49:48 ID:???
 -  >>481 
 設定入れてきます。< live16 
 
- 483 : ◆cZfSunOs.U  :05/01/03 22:49:56 ID:yt/ZsWUR
 -  >>480 とりあえず >>440-441 を参考に...... 
 
- 484 :FOX ★ :05/01/03 22:51:59 ID:???
 -  その プールとやらはどこにあるんですか? 
  
 見たところ アパッチの中のあるメモリ領域のように感じましたが 
 read.cgi から作成/設定、設定されていたら読み出し 
 こんな感じですか? 
 
- 485 : ◆cZfSunOs.U  :05/01/03 22:57:12 ID:yt/ZsWUR
 -  >>484 そういうことですね. 
 
- 486 :root▲ ★ :05/01/03 23:00:28 ID:???
 -  live16をdso化しました。 
 news19から持ってきたread.cgiを入れてあります。 
 
- 487 :FOX ★ :05/01/03 23:01:52 ID:???
 -  どもです どもです >>486 
  
 >>485 
 挑戦してみます。 
 
- 488 :FOX ★ :05/01/03 23:08:41 ID:???
 -  ちなみに modcgi_dso のホームページってどこなんですか? >>485 
 リンクしようかと、 
 
- 489 : ◆cZfSunOs.U  :05/01/03 23:12:22 ID:yt/ZsWUR
 -  >>488 現状ではないです.作るなら 2ch Wiki あたりにとか...... 
 
- 490 :FOX ★ :05/01/03 23:16:50 ID:???
 -  りょうかいですー 
 static なページを作ってそこにリンクしておこう 
 奮戦気あたりをぼちぼち書いて、 
 
- 491 :FOX ★ :05/01/03 23:18:59 ID:???
 -  typedef struct のところで 
 コンパイル時こんなエラーが、 
  
 read.c:10: error: syntax error before "apr_thread_rwlock_t" 
  
 何かヘッダーが足りないですか? 
  
 
- 492 :FOX ★ :05/01/03 23:23:18 ID:???
 -  あと、 
 #define AD_CHECK_INTERVAL 60 
  
 の 60 って単位は sec ですか? 
 
- 493 : ◆cZfSunOs.U  :05/01/03 23:24:48 ID:yt/ZsWUR
 -  >>491 あ......thread サポートが有効でないとそのあたりが定義されませんね...... 
 rwlock や mutex を使ってるところは 
  
 #if APR_HAS_THREADS 
     : 
 #endif 
  
 で囲ってしまうのがいいかと. 
  
 >>492 そうです. 
 
- 494 :root▲ ★ :05/01/03 23:28:33 ID:???
 -  threadサポートは(今のところ)入れてないです。< tiger/cobra 
 今のところこれでいきますが、将来worker MPMとか使う時は、どきどき、か。 
  
 でもSpeedyCGIもworker MPMには対応してないので、 
 その時にはまた別途、ってかんじかなと。 
 
- 495 :FOX ★ :05/01/03 23:29:49 ID:???
 -  それでやってみます 
 
- 496 :FOX ★ :05/01/03 23:41:47 ID:???
 -  質問ですじゃ 
  
  
 if (ad_pool->mtime) 
 ap_rwrite(ad_pool->m->mm, ad_pool->m->size, r); 
  
 この部分で実際に書いていると思うんですが、(>>441) 
 1) if (ad_pool->mtime) これはどんな意味なんですか? 
 2) 文字列はad_pool->m->mmに入っているから strcpy(保存.ad_pool->m->mm); 
   とかやって取って置けますか? 
  
 
- 497 :FOX ★ :05/01/03 23:42:55 ID:???
 -  ちなみに コンパイルも通って 
 実際に文字列がファイルから取ってこれるところまではできました。 
 インターバルが 60 になっているかどうかの検証はしていません。 
 
- 498 : ◆cZfSunOs.U  :05/01/03 23:52:44 ID:yt/ZsWUR
 -  >>497 
 1) 広告ファイルが存在しないなど読み込み不能の場合は ad_pool->mtime を 
   0 にしているので,そのチェックです. 
 2) できますが,strcpy するなら mmap する意味がなくなってしまうかと. 
   現状のコードは mmap された領域自体を保持するようにしています. 
   # もっとも,終端が '\0' である保証はないので strcpy より memcpy の方がいいですが. 
 
- 499 :動け動けウゴウゴ2ちゃんねる :05/01/04 00:03:32 ID:1PKdu0z3
 -  スレ開いたとき上部に出てくるリンクで、 
 「101-」から「1001-」に該当する部分がごっそり落ちてるんすけど。 
 
- 500 :FOX ★ :05/01/04 00:03:42 ID:???
 -  ふむふむ 
  
 必要なときに出すことにしまーす。 
  
 広告定義ファイルが更新されたら即広告も変化するということでいいのかしら? 
 
- 501 : ◆cZfSunOs.U  :05/01/04 00:07:21 ID:cUO4X74T
 -  >>500 前回のチェックから AD_CHECK_INTERVAL 秒経過後のチェックで 
 ファイル更新が確認されれば広告も更新ということですね. 
 
- 502 :FOX ★ :05/01/04 00:08:25 ID:???
 -  うーむ 
  
 600 sec にして広告変更したらすぐ変わっちまったなぁ 
 毎回読んじゃっているのかしら? 
 
- 503 : ◆cZfSunOs.U  :05/01/04 00:10:27 ID:cUO4X74T
 -  あと,ファイル更新の際は旧ファイルをいったん rm するか, 
 新しいファイルをいったん別ファイルで作成した上で mv するか,という手順が必要です. 
 mmap の性質上,旧ファイルをそのまま書き換えると SEGV でこける可能性があります. 
 
- 504 : ◆cZfSunOs.U  :05/01/04 00:14:01 ID:cUO4X74T
 -  >>502 httpd プロセスが多数ある状況では,前回呼んだ時と同じ httpd プロセスで 
 処理してもらうってことにはなかなかならないと思うので,その確認をするなら 
 httpd プロセス数を絞らないと難しいかもです. 
 
- 505 :root▲ ★ :05/01/04 01:09:03 ID:???
 -  >>504 
 httpdのpidとかでチェックする、、、のかな。 
 でも、例えばlive8やlive16とかだと1280人もいるし。 
 
- 506 : ◆cZfSunOs.U  :05/01/04 01:15:34 ID:cUO4X74T
 -  >>505 やるとすればそうなりますね.dso.2ch.net だけ一時的に数を絞ってみるとか...... 
 
- 507 :FOX ★ :05/01/04 01:30:33 ID:???
 -  ファイルは管理人が必要なときに FTP で一気に 
 全サーバに配られる仕組みになっとります。 
 
- 508 :root▲ ★ :05/01/04 01:37:16 ID:???
 -  >>507 
 FTPでもrenameはできるので、 
 いったん read.cgi.new という名前で put して、 
 read.cgiにrenameするのがいいとおもわれますです。 
 
- 509 :FOX ★ :05/01/04 01:38:50 ID:???
 -  バッチというか書き方わからんす  
 
- 510 :FOX ★ :05/01/04 01:39:46 ID:???
 -  Perl で FTP だったりするです。 
 現状までは書いたけど、それ以上は私の能力の限界だったり、、 
 
- 511 : ◆cZfSunOs.U  :05/01/04 01:44:10 ID:cUO4X74T
 -  あっ......>>503 は広告ファイルのことを意図して書いたんですが, 
 dlopen() も OS 内部で mmap() しますから read.cgi 自体もそうですし, 
 その他のデータファイル等も CGI 等でオープン中に中身が変わると 
 やはり不都合が生じる可能性があるので,基本的にその他のファイルも含めて 
 >>508 のような手順を踏むのがいいかも知れませんね. 
 
- 512 :root▲ ★ :05/01/04 02:01:16 ID:???
 -  Net::FTP を使ってるなら、単にこれでいいのではと。 
  
 $ftp->put("read.cgi","read.cgi.new"); 
 $ftp->rename("read.cgi.new","read.cgi"); 
 $ftp->site("CHMOD","0755","read.cgi"); 
 
- 513 :動け動けウゴウゴ2ちゃんねる :05/01/04 02:04:43 ID:np3HnhYt
 -  リンクはー?? 
 リンクはどうなるんですか? 
 
- 514 :FOX ★ :05/01/04 02:25:32 ID:???
 -  たくさんあるですよ、、、 
 
- 515 :動け動けウゴウゴ2ちゃんねる :05/01/04 02:46:07 ID:np3HnhYt
 -  リンクはなくなるの? 
 スレや他サイトの<a>タグが全然つかなくなってるんですけど 
 
- 516 :FOX ★ :05/01/04 03:07:30 ID:???
 -  ほぼ完成か? 
 
- 517 :FOX ★ :05/01/04 03:14:05 ID:???
 -  tiger 全部 dso 化したいですー > root ★さん 
  
 game10 
 news18 
 game9 
 etc4 
 life7 
 hobby7 
 で全部かな? 
 
- 518 :root▲ ★ :05/01/04 03:15:48 ID:???
 -  おぉ、、、。すごい。 
  
 ちゃんと、上の広告入ってるですね。< news19 
  
 あとはime.nuかしら。 
 で、一番下のFOX ★は<b>と</b>で囲んだほうがよさげかも。 
 
- 519 :root▲ ★ :05/01/04 03:18:17 ID:???
 -  >>517 
 tiger503 ex7 済み 
 tiger504 game10 
 tiger505 news18 
 tiger506 game9/etc4/dso dsoのみ済み 
 tiger507 live16 済み 
 tiger508 life7 
 tiger509 news19 済み 
 tiger510 hobby7 
  
 上記、済み以外のところを作業してくるです。 
 
- 520 :FOX ★ :05/01/04 03:19:55 ID:???
 -  あっ ime.nu があったか 
 明日にでもやろう 
  
 
- 521 :FOX ★ :05/01/04 03:21:12 ID:???
 -  って ime.nu って今やってもいいんだけど、 
  
 単に http://ime.nu/http://abc.bb/ とかってつけるんでしたっけ? 
 
- 522 :root▲ ★ :05/01/04 03:25:07 ID:???
 -  http://ime.nu/abc.bb/ 
  
 のように、http:// を除いた部分が入ります。 
 で、2ch.net内はime.nuを経由しないと。 
  
 で、桃色の場合はpinktowerになるのかな。 
 
- 523 :FOX ★ :05/01/04 03:26:24 ID:???
 -  ime.nu でいいんでしたっけ? 
 いくつか種類があるような。 
 
- 524 : ◆cZfSunOs.U  :05/01/04 03:27:31 ID:cUO4X74T
 -  ftp://example.com/path/ や https://example.com/ は ime.nu 側が対応してなければ 
 直リンの方がいいでしょうけど. 
 
- 525 :FOX ★ :05/01/04 03:28:36 ID:???
 -  あっと ftp は別にいいとして 
 https:// は対応しなきゃ < あんかー付け 
 
- 526 :root▲ ★ :05/01/04 03:36:37 ID:???
 -  >>519 のサーバ側の作業終了です。 
 これから、まずは news19 の read.cgi を入れておきます。 
 
- 527 :root▲ ★ :05/01/04 03:44:22 ID:???
 -  >>519 のサーバのread.cgiを、news19のものに入れ替えました。 
 
- 528 :root▲ ★ :05/01/04 03:52:07 ID:???
 -  >>519 のサーバは、read.cgi / bbs.cgi / subbbs.cgi の時には nokeepalive していたのを 
 dat直読み同様に keepalive 有効にしました。 
 
- 529 :root▲ ★ :05/01/04 03:56:48 ID:???
 -  私のほうの作業は、これでおわりのはず。 
 read.cgiはいったんread.soという名前でftp/putして 
 chmodしてrenameするのをやってみました。 
 Text file busyにもならないし、これがよいかなと。 
  
 ということで明日より出勤のため、そろそろおやすみなさい。 
 
- 530 :動け動けウゴウゴ2ちゃんねる :05/01/04 04:01:09 ID:iIFlZlJo
 -  >>529 
 root氏乙 
 
- 531 : ◆cZfSunOs.U  :05/01/04 04:01:56 ID:cUO4X74T
 -  >>529 お疲れさまでした. 
  
  
 まぁあと気になるのは,Last-Modified チェックをなくしたことで, 
 リロードしまくりの人が多い場合にどうなるか,ってあたりですが. 
 
- 532 :root▲ ★ :05/01/04 04:03:10 ID:???
 -  http://news18.2ch.net/test/read.cgi/mnewsplus/1089994287/ 
  
 dat落ちの時の出方、変えたですか。 
 最初と最後だけ出すと。 
 
- 533 :FOX ★ :05/01/04 04:04:06 ID:???
 -  最新のに入れ替えた >>519 
  
 >>531 
 どっちが負荷高いのかな? ってとこかと、 
 (転送量は気にしない場合) 
 わからんのだが、 
 
- 534 :root▲ ★ :05/01/04 04:04:29 ID:???
 -  >>530-531 
 ほんとうに働いたのは、FOXさんかと。 
 私はサーバの設定をごそごそしただけ。 
  
 で、>>531は、各サーバ(特にread.cgiが多いnews18とnews19)の 
 転送量でおのずとわかるのかなと。 
  
 ねるー。 
 
- 535 : ◆cZfSunOs.U  :05/01/04 04:10:38 ID:cUO4X74T
 -  >>534 ですね. 
  
 >>533 お疲れさまです. 
 まぁ Last-Modified チェック版と非チェック版を用意して比較するのもいいかも知れませんが. 
 
- 536 :root▲ ★ :05/01/04 04:10:57 ID:???
 -  寝ようと思ってnewsplusで確認したら、>>1 の出方が軒並み変なような。 
 あと、リンクが ? で切れてしまうような。 
 
- 537 :動け動けウゴウゴ2ちゃんねる :05/01/04 05:23:31 ID:Hi55/O37
 -  <base>を使わない以前のURLの書き方に戻してくれよぉ(´・ω・`) 
 
- 538 :FOX ★ :05/01/04 05:30:41 ID:???
 -  もともと使っているから 
 まねしたんだが、 
 
235KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30