5

をサポートする既存の Perl アプリケーションがありますmod_perl。ただし、新しいホスト (Dreamhost) は mod_perl をサポートしておらず、FastCGI のみをサポートしています。したがって、ポートが必要です。

既存のコードは Apache 固有のものを使用しておらず、 に受け入れられる方法で書かれた通常の Perl コードですmod_perl

ドキュメントとオンライン チュートリアルを読むと、FastCGI サポートを追加するには、特定の種類のループ内に既存のコードをラップする必要があるようです。以下は、最も一般的に与えられるスケルトン コードです。

A. FCGI の使用

use FCGI;
while (FCGI::accept >= 0)
{
    #Run existing code.
}

B. CGI::Fast の使用

use CGI::Fast
while (my $cgi = CGI::Fast->new()) 
{  
   #Run existing code.
}

サブ質問:

  1. メソッドABは、FastCGI サポートを追加する同等の方法ですか?
  2. ABが異なる場合、一方を他方に使用することの長所と短所は何ですか?
  3. mod_perlから FastCGIに移植するときに知っておくべきベスト プラクティスや落とし穴はありますか?

ありがとう。

4

2 に答える 2

3

一般的に、FastCGIアプリケーションはCGIと非常によく似ています。主な違いは、プロセスを永続化できるという事実を利用できることです。これを利用して、アプリケーションの速度を向上させることができます。たとえば、実行中のプロセスでデータベースデータをキャッシュできます。基本的に、アプリケーションを独自のアプリケーションサーバーに変更し、Webサーバーによって提供されるFastCGIゲートウェイの背後で実行します。

アイデアは、アプリケーションの処理手段をFastCGIゲートウェイに適用できるようにする方法を理解することです。mod-perl固有の機能を使用していますか?もしそうなら、それから離れてください。そうでない場合は、FastCGIを介して会話を開始します。Perlで利用可能なFastCGIインターフェースがあるという利点があります。ある種のバージョン管理システムを使用していると思いますので、FastCGIに移植するためのブランチを作成してください。次に、POSTとPUTを標準入力からの読み取りとして、アプリケーションの応答を標準出力への書き込みとして考え始めます。

また、アプリケーションのFastCGIインターフェイスを実装するライブラリを読み通すこともできます。それらのいくつかはfastcgi.comで見つけることができます。これは、アプリケーションが現在実行していることとは異なる方法で実行することを理解するのに役立つ場合があります。

幸運を!

于 2009-03-20T04:34:09.180 に答える
2

CPAN ドキュメントをざっと見ると、CGI::Fast は FCGI のラッパーのようです。CGI::Fast ページから:

CGI::Fast を使用するには、FCGI モジュールが必要です。

私の見解では、基本的に CGI.pm の標準機能を FastCGI の速度の利点とともに使用できるということです (ヘッダー作成とパラメーター アクセスは、おそらく既に使用している CGI.pm の主な機能です)。

私はこれらのどちらも使用していません。これはドキュメントから見たものにすぎないため、間違っている可能性があります。

于 2009-03-20T05:32:20.100 に答える