CGIプログラムの起動を高速にするためのApacheモジュール。
CGIをApacheのモジュールとして動かすことでApacheのプロセス内で実行するので、 CGI自体をプロセスとして起動する必要がなくなります。よってCGIの起動コストが無くなり パフォーマンスの向上に繋がります。
CGIそのものをモジュール化するとプログラム変更のたびにモジュールの入れ替えのため Apacheの再起動が必要になりますが、mod_cgidso 実行した場合は動的にモジュールが 呼び出される為、Apacheの再起動は必要ありません。
mod_cgidso を利用するには、C/C++で書かれたソースコードを Apacheのモジュール用に書き直す必要があります。 プログラムの最初に呼び出される main() を dso_main() に変更します。
mod_cgidso の場合は dso_main() が main() の代わりに呼び出されます。
プログラムをコンパイルするには、apxsを使用します。 apxsはApacheパッケージに含まれる、Apacheモジュールを作成するプログラムです。 apxsを使ってコンパイルするには次のように行います。
$ apxs -c foo.c
コンパイルが通ると、カレントディレクトリの .libs というディレクトリに foo.so というファイルが生成されます。
この foo.so というファイルがApacheのモジュールです。 foo.soを呼び出すことで、mod_cgidsoがfoo.soをApacheモジュールとして実行してくれます。
#include "httpd.h" /* main() の代わりに dso_main() が最初に呼びされる */ int dso_main(request_rec *r, int argc, char **argv) { /* Content-Type の設定例 */ ap_set_content_type(r, "text/html"); /* コンテンツ出力例 */ ap_rprintf(r, "Hello, world!\n"); return(0); }
プログラムはApacheのモジュールとしてメモリ上に常駐する形になりますので、 メモリリークには注意してください。malloc等で明示的に確保したメモリは、必ず開放を行ってください。
専用サーバーコース をご利用のお客様で mod_cgidso の使用をご希望のお客様はメールにてお気軽にお問い合わせ下さい。
BIG-server.com オプションサービスに戻る
ご質問などございましたらお気軽にお問い合せください。 server@maido3.com