PHP CGI

CGIとFastCGIの違い
CGIとFastCGIの主な違いは、性能とプロセス管理の面で見られます。

*性能:
CGI: CGIはリクエストごとに新しいプロセスを起動し、処理が終わるとプロセスが終了するため、毎回プロセスを起動・終了するオーバーヘッドがありました。
FastCGI: FastCGIはプロセスをプールして再利用することができ、常に実行されたままになります。これにより、毎回プロセスの起動・終了を行わずに済むため、高い性能を実現できます。
*プロセス管理:
CGI: CGIは各リクエストごとに新しいプロセスを起動し、終了するので、プロセス管理が単純ですが、オーバーヘッドが発生します。
FastCGI: FastCGIはプロセスをプールして再利用するため、プロセス管理が効率的です。プロセスの起動・終了のオーバーヘッドが少なくなります。
通信方式: CGI: 標準的なI/Oを通じてウェブサーバーと通信します。 FastCGI: 高レベルのプロトコルを通じてウェブサーバーと通信し、リクエストとレスポンスを非同期で処理できます。 FastCGIはこれらの特徴により、CGIよりも高いパフォーマンスと効率を提供します。特に、ウェブサーバーと外部プロセスとの効率的な通信を可能にし、リソースの効果的な利用ができます。**

phpはhttpを吐けない

Laravelアプリケーションを運用する場合、一般的にはPHPランタイムと一緒にウェブサーバーが必要です。一般的な構成としては、NginxやApacheなどのウェブサーバーが利用されます。これはLaravelが動的なウェブページを生成するためにPHPを使用するためです。NginxはLaravelアプリケーションをサーブするためのポピュラーなウェブサーバーの一つで、通常はPHP-FPM(PHP FastCGI Process Manager)と組み合わせて利用されます。PHP-FPMはPHPプロセスを管理し、ウェブサーバーとの連携を可能にします。簡単に言えば、NginxがHTTPリクエストを受け取り、それをPHP-FPMに転送してLaravelアプリケーションの処理が行われます。このような構成により、ウェブサーバーとPHPランタイムが協力してアプリケーションを提供します。

FastCGI(Fast Common Gateway Interface)は、ウェブサーバーと外部プログラム(通常はプログラミング言語のランタイム、例えばPHPなど)との間で効率的な通信を可能にするプロトコルです。NginxはFastCGIプロトコルをサポートしており、PHPとの連携によく使用されます。
具体的には、NginxがFastCGIをサポートしていることで、外部のFastCGIプロセス(例: PHP-FPM)と通信できます。これにより、NginxがHTTPリクエストを受け取り、それをPHP-FPMに転送してPHPコードを処理し、その結果をNginxがクライアントに返す形で動的なウェブページやアプリケーションを提供できます。
要するに、FastCGIはNginxとPHP-FPMのような外部プログラムが連携するためのプロトコルであり、Nginxが様々な言語ランタイムと協力して動的なコンテンツを提供できる仕組みを提供しています。

Nginxはウェブサーバーソフトウェアで、内蔵されたHTTPサーバーとFastCGIプロトコルを通じた外部プログラムとの連携機能を提供しています。主に以下の2つの機能が組み込まれています:

  1. *HTTPサーバー:
  2. Nginxは非常に効率的で高性能なHTTPサーバーを内蔵しています。静的なコンテンツの提供やリバースプロキシとしての利用が一般的です。
  1. *FastCGIプロキシ:
  2. FastCGIプロトコルをサポートし、外部のFastCGIプロセス(例: PHP-FPMなど)と通信できる能力が組み込まれています。これにより、動的なコンテンツの生成や処理を外部プログラムに委譲できます。
  1. この2つの機能により、Nginxは高いパフォーマンスと柔軟性を提供し、多くのウェブサイトやアプリケーションで広く利用されています。**

コメント

タイトルとURLをコピーしました