3

私は長い間 Perl でプログラミングをしてきました。アプリケーションの構築には常に CGI テクノロジを使用してきました。今、私はそれらを再構築し、FCGI に新しいものを書くことを考えています。fe Starman で FastCGI と PSGI を unsing することの違いを説明してください。また、現在どの Perl フレームワーク (FCGI を使用) が「トレンド」になっているのかについても説明を求めています。CGI::Fast を使用して、CGI スクリプトを強制的に FCGI スクリプトとして機能させることができることを理解しました。これを行う他のモジュールはありますか?

ありがとうございました!

4

2 に答える 2

6

あなたはこれを間違った視点から見ています。プログラムをどのように展開するかについては考えないでください。代わりに、プログラムをPSGIインターフェースに書き込んでください。その後、何も変更することなく、CGI、FastCGI、mod_perl などの任意の環境にアプリケーションをデプロイできます。

Plack::RequestPlack::Responseなどのモジュールを使用して「生の」PGSI を作成できますが、 DancerCatalystなどのフレームワークを使用することをお勧めします。

PSGI 環境で実行したい既存の CGI プログラムがある場合は、Plack::App::WrapCGIを参照してください。

于 2013-12-04T16:29:18.630 に答える
6

CGI は、情報サーバーが別のプログラムにデータを渡す方法の標準的な定義であることを理解することが重要です。

共通ゲートウェイ インターフェイス (CGI) は、プラットフォームに依存しない方法で、情報サーバーの下で外部プログラム、ソフトウェア、またはゲートウェイを実行するための単純なインターフェイスです。現在、サポートされている
情報サーバーは HTTP サーバーです。

このインターフェースは、1993 年以来 World-Wide Web で使用されています。この仕様は、「CGI/1.1」として知られるインターフェースと
、Unix(R) および AmigaDOS(tm) システムでのその使用法を定義しています。

標準モデルでは、Web サーバーは必要になるたびに外部プログラムを開始し、データを標準形式にマーシャリングして、[環境の一部として、または外部プログラムの標準入力を介して、プログラムに渡します。 HTTP メソッド (GET、POST など) が使用されます。プログラムはデータを処理し、ヘッダーとコンテンツを標準出力に出力してデータを返し、終了します。

CGI の主な欠点は、呼び出しのたびに外部プログラムを開始する費用です。Unix では、これには Web サーバーがメモリ内にそれ自体のコピーを作成し (fork)、そのコピーに外部プログラムをオーバーレイする (exec) 必要があります。fork/exec サイクルは、特に Perl インタープリターでオーバーレイされた大規模な Apache プロセス (数 MB のメモリ フットプリント) について話している場合、計算コストが高くなります。Perl プログラムを実行する前に解析する必要があります。

方程式から fork/exec サイクルを取り除くために、いくつかの新しいものが開発されました。Mod_perl は、Perl インタープリターを apache プロセスに組み込み、呼び出しごとに fork/exec する必要をなくし、解析された perl プログラムのキャッシュも可能にします。さまざまな組織によって報告された数値によると、スループットの増加は CGI の 20 倍から 100 倍です。

FastCGI と呼ばれる 2 番目の方法もほぼ同時期に開発されました。FastCGI では、外部プログラム (多くの場合、コンテナーまたはアプリケーション サーバー) が http サーバーの開始と同時に開始され、http サーバーが要求を FastCGI プロセスにプロキシします。このモデルは fork/exec サイクルを削除するのと同じ利点を提供し、mod_perl とは異なる一連の長所と短所があります。

最終的に、CGI/FastCGI/mod_perl のいずれを選択しても、プログラムは Web サーバーから渡されたデータを取得する方法を理解する必要がありました。これが問題の核心です。ほぼすべてのポスト CGI テクノロジが独自に定義しています。プログラムとの間でデータをやり取りする方法 (PSGI の GI は依然としてゲートウェイ インターフェイスを表します) ですが、採用を容易にするために、推奨される方法を CGI モデルに変換するアダプターを提供します。

あなたの質問に答えたかどうかはわかりませんが、質問していただきありがとうございます。私はこの答えを書くのを楽しんだ;-)

于 2013-12-04T16:37:06.430 に答える