ホームページ  >  記事  >  バックエンド開発  >  fastcgi と cgi はどう違いますか?

fastcgi と cgi はどう違いますか?

不言
不言転載
2019-03-21 15:51:263023ブラウズ

この記事の内容は、fastcgiとcgiの違いについてです。一定の参考値があるので、困っている友達は参考にしていただければ幸いです。

現在、CGI は安全でなくパフォーマンスも非常に低いため、誰も使用していませんが、組み込みの Web 拡張機能や fastCGI を使用する人が増えています。たとえば、Microsoft iis の ISAPI、apache の php モジュール、nginx の php-cgi などです。 CGI、組み込みモジュール、および fastcgi が最も優れたパフォーマンスを発揮する 3 つであり、fast_cgi が最も高速ですが、追加のプロセスが必要です。 CGI と FASTCGI の違いを分析しましょう

CGI 手法の紹介:

cgi は 2000 年以前によく使われていました。静的リクエストは処理されますが、動的リクエストが発生した場合はどうすればよいですか?次に、Web サーバーは、このリクエストの内容に基づいて外部 C プログラム (または Perl スクリプトなど) を実行する新しいプロセスをフォークします。このプロセスは、処理されたデータを Web サーバーに返し、最後に Web サーバーから送信されます。コンテンツをユーザーに送信すると、フォークされたばかりのプロセスも終了します。ユーザーが次回動的スクリプトの変更を要求すると、Web サーバーは再び新しいプロセスをフォークし、サイクルが継続します。

Web 組み込みモジュールの紹介:

その後、より高度な方法が登場し、Web サーバーに Perl インタープリターまたは php インタープリターを組み込むことができます。つまり、これらのインタープリタはモジュール化されており、Web サーバーは起動時にこれらのインタープリタを起動します。新しい動的リクエストが受信されると、Web サーバーはこれらの Perl または php スクリプトを独自に解析するため、プロセスを再フォークする必要がなくなり、効率が向上します。

Fastcgi メソッドの紹介:

fastcgi メソッドは、Web サーバーがリクエストを受信したときに、プロセスを再分岐しません (このプロセスは開始時に開始されるため)。リクエストが有効になると Web サーバーがオンになり、終了しません)、Web サーバーはコンテンツをこのプロセスに直接渡します (プロセス間通信ですが、fastcgi は他のメソッド (TCP 通信) を使用します)、このプロセスはリクエストを受信した後に処理します。

fastcgi と cgi table の違い:

fastcgi と cgi はどう違いますか?

例: サーバーには現在 100,000 語の単語があります。クライアントは毎回文字列を送信し、この文字列の前に付く単語の数を尋ねます。その後、トライ ツリーを構築するプログラムを作成すると、ユーザーがリクエストするたびにトライを直接検索できるようになります。しかし、CGI を使用すると、このリクエストを実行するとトライ木が消えてしまい、次回処理を開始するときに新しいトライ木を作成する必要があり、効率が悪すぎます。 fastcgi を使用すると、このレッスンのトライ ツリーはプロセスの開始時に確立され、後でトライ ツリー上の指定されたプレフィックスを直接クエリできます。


以上がfastcgi と cgi はどう違いますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。