« 2008年02月 | メイン | 2008年06月 »

2008年03月28日

Apache API モジュールを作ろう

char *src = malloc(strlen(r->uri));
strcpy(src , r->uri);

char *src = ap_pcalloc(r->pool, strlen(r->uri) );
src = ap_pstrdup(r->pool, r->uri);
上と下のコードでは、結果が違う場合があります。


直接システムコールやライブラリ関数呼び出すことは避けましょう。
基本的な関数はApacheAPIとして用意してあるようです。
ほとんどが英語のドキュメントなので、サンプルを見ながら黙々と作業です。


低負荷な状況では問題がおこらなくても、高負荷になり連続してメモリの確保・開放などを繰り返すと問題が発生すると思うよ。

ってな事に気をつけて、具体的にモジュールを作成していきます。


今回作るのは、Apache1.3でのキャッシュモジュールです。
わけあってApache2に移行出来ずにいるWEBサービスで、画像ファイルのみをキャッシュさせる必要が出てきました。
画像ファイルは一つのDISKに入っていて、WEBサーバ約20台が表に立っています。
画像へのアクセスはすべてここにアクセスが来るため、これ以上WEBサーバーを増やしてもここがボトルネックになり、スピードが上がらない状況になりつつあります。

解決方法はほかにも色々とありそうですが、Apacheのモジュールを作ってみたいので、他の仕組みは考えません。(お金をかけたくないし、サーバーもできればこれ以上増やしたくないし、プログラムの作り替えといったリスキーな手法は避けたい、とか理由もありますよ!)

ってな事で、とにかく作成に取り掛かります。・・・・・・・

投稿者 Anne : 16:23 | コメント (0)

2008年03月22日

Apacheのモジュール作成 API Module

Apache1.3でモジュールの作成に挑戦してみます。

かゆいところに手が届く物は、やっぱり自分で作らなくちゃね!!

と言うことで、NDSで鍛えた英語力でApacheAPIの英語DocumentをGET&なんとなく読む
http://httpd.apache.org/dev/apidoc/
http://httpd.apache.org/docs/2.0/developer/modules.html

http://gnug.nu/index.php?option=com_content&task=view&id=25&Itemid=5
サンプルを物色する。


Apache1.3は下記の場所(Apacheの状態)でフック(処理の横取り)することができる。

module cgi_module = {
STANDARD_MODULE_STUFF,
NULL, /* initializer */
NULL, /* dir config creator */
NULL, /* dir merger --- default is to override */
make_cgi_server_config, /* server config */
merge_cgi_server_config, /* merge server config */
cgi_cmds, /* command table */
cgi_handlers, /* handlers */
translate_scriptalias, /* filename translation */
NULL, /* check_user_id */
NULL, /* check auth */
NULL, /* check access */
type_scriptalias, /* type_checker */
NULL, /* fixups */
NULL, /* logger */
NULL /* header parser */
};

全ての場所で、

FILE *stream2;
stream2 = fopen(LOG_FILE, "ab+");
fwrite("child_exit\n", strlen((char *)"child_exit\n"), 1, stream2);
fclose(stream2);

こんな感じでLOGを吐き出すようにして、Apacheを一通り動かしてみると早く理解できます。

続く・・・・

投稿者 Anne : 01:36 | コメント (0)

 

ハワイ旅行| サトピの子連れグアム旅行記| グアム旅行の情報サイト| ジャマイカ| ハワイ・ハワイ旅行の携帯サイト| 海外レンタル携帯電話| ハワイに行きたいAnneさんのページ| サイパン旅行の情報サイト| ケイマン諸島の情報サイト| 沖縄 沖縄旅行の情報サイト| ガーデニング| エクステリア| リナックス| ザウルス| アフィリエイト| 相互リンク| ブログパーツ| ブログ・ブログ比較| 日本のお城データベース| 技術立国日本| 通信販売| 靴 通販 ショッピング| 腕時計 ショッピング 通販| 無料動画、フラッシュ、API

Copyright (C) 2006-2007 Anne Corporation. All Rights Reserved.