by Hippo2000(2000/8/9)
CGI::Fastモジュールなのです。
原本の著作権はLincoln D. Stein.氏がお持ちです。詳しくは著作権情報をご覧ください。
内容等が間違っていたら修正します。ご連絡ください。
CGI::Fast - Fast CGI のためのCGIインターフェース
use CGI::Fast qw(:standard);
$COUNTER = 0;
while (new CGI::Fast) {
print header;
print start_html("Fast CGI Rocks");
print
h1("Fast CGI Rocks"),
"Invocation number ",b($COUNTER++),
" PID ",b($$),".",
hr;
print end_html;
}
CGI::Fast はCGI.pmによって作成されるCGIオブジェクトののサブクラスです。Open Market FastCGI標準でうまく機能するように特殊化されています。それはCGIスクリプトを永続的に実行しているサーバプロセスに変換することによって、そのスピードを大きく向上させます。大きなモジュールをロードしたり、永続的なデータベース接続を開くような時間のかかる初期化を行うプロセスのパフォーマンスは大きく向上するでしょう。
CGI::Fastを使うために、FastCGIが使えるWebサーバが必要です。 Open MarketのサーバはFastCGI-savvyです。NCSA httpd 1.5とApacheのためのフリーで再配布できるFastCGIモジュールもあります。Microsoft Internet Information ServerとNetscape Communications ServerのためのFastCGIを可能にするモジュールはアナウンスされています。
さらにFastCGI I/OラブラリとリンクされたPerlインタープリタのバージョンが必要になります。DEC Alpha, HP-UX そしてSPARC/Solarisを含めて多くのプラットフォームのためにコンパイル済みのバイナリが利用できます。あるいはFastCGI開発者キットで提供されるパッチをあてたソースからPerlを再作成することができます。FastCGI Perlインタープリタはおかしな結果なしに、通常のPerlの場所で使うことが出来ます。
Apache と NCSA httpdのためのFastCGIモジュール、コンパイル済みのPerlインタープリタ、FastCGI開発者キットのすべてを見つけることが出来ます:
http://www.fastcgi.com/
FastCGIスクリプトは永続的です:サーバが初期化されると、1つまたは複数のスクリプトのコピーが起動され、サーバが終了するか、自然死するまで残ります。それが必要とする1回の初期化を何であれ行った後、スクリプトは接続が来るのを待ち、リクエストを処理し、さらに待つというループに入ります。
典型的なFastCGIスクリプトは以下のようになります:
#!/usr/local/bin/perl # FastCGIバージョンのPerlでなければなりません!
use CGI::Fast;
&do_some_initialization();
while ($q = new CGI::Fast) {
&process_request($q);
}
新しいリクエストがあるたび、CGI::FastはCGIオブジェクトをループに返します。残りの時間、スクリプトはnew()の呼び出しで待っています。サーバがスクリプトに終了することを要求するとき、new()はundefを返します。もちろん、そうしたければもっと早く終了することも出来ます。スクリプトの新しいバージョンは、その場所をとるために再び起動されます(長時間実行するスクリプトでのPerlメモリ・リークをさけるために、これが必要かもしれません)。
CGI.pmのデフォルトのCGIオブジェクトも同様に機能します。(訳者注:関数指向のことを指している)単にループを、このように変更してください:
while (new CGI::Fast) {
&process_request;
}
header()、start_form()などは、すべての現在のリクエストに影響を与えます。
完全な詳細はFastCGI開発者キットドキュメントをご覧下さい。Appacheサーバでは、以下の行をsrm.confに追加しなければいけません:
AddType application/x-httpd-fcgi .fcgi
FastCGI スクリプトは拡張子 .fcgiで終わらなければなりません。インストールする各スクリプトでは、以下のようなものをsrm.confに追加しなければなりません:
AppClass /usr/etc/httpd/fcgi-bin/file_upload.fcgi -processes 2
これは起動時にfile_upload.fcgi の2つのコピーを起動するようにApacheに命令しています。
FastCGIスクリプトとして正常に機能するすべてのスクリプトは普通のCGIスクリプトとしてインストールされたときにも正常に機能します。しかしながら、パフォーマンス的な利点は見られないでしょう。
これはあまりテストしていません。
Copyright 1996-1998, Lincoln D. Stein. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
バグレポートとコメントはlstein@cshl.org に送ってください。
このセクションは最初はブランクのままです。
(訳者注:どうもデフォルトのままのようです)
CGI::Carp, CGI
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。