この記事では主にmod_php、FastCGI、PHP-FPMなどのPHPの実行方法の比較を紹介します。 この記事ではPHPとは何かについて説明します。 handlers(PHPハンドラー)とmod_php FastCGIのメリットとデメリット、PHP-FPM(FastCGI Process Manager)のメリットとデメリットなど。困っている友達は参考にしてください
概要
今日はUbuntuでLNMP環境を構築したいので、NginxはPHP-FPMを使用するので、WebサーバーとPHPインタープリターのやり取りを整理しました。
ご存知のとおり、PHP はクロスプラットフォームおよびクロスサーバー言語であり、これが人気の理由の 1 つです。ただし、PHP インタープリターがさまざまな方法で Web サーバー内で実行できることを知っている人はあまりいません。 PHP で最も一般的に使用される方法は、Apache でモジュール (mod_php) として実行することです。これは、Apache が PHP を実行するデフォルトの方法でもあります。しかし、Nginx では、Nginx は PHP-FPM を使用します。
この記事ではこれらの概念を紹介します。何か間違っている場合は、批判やアドバイスをお願いします。
PHPハンドラーとは何ですか?
まず覚えておいていただきたいのは、あらゆる種類の Web サーバー (Apache、Nginx など) は、HTML、画像などの静的リソースをユーザーに送信するように設計されており、Web サーバー自体は動的スクリプト (PHP、Nginx など) を解釈できないということです。 Python など) 。 PHP プロセッサは、Web アプリケーション内の PHP コードを解釈し、それを HTML またはその他の静的リソースとして解釈し、解析結果を Web サーバーに渡し、最後に Web サーバーがそれをユーザーに送信するために使用されます。ほとんどの Web サーバーは PHP コードを解析できないため、PHP コードを解析できるプログラムが必要です。これが PHP プロセッサです。
mod_php
まず、PHP を Apache モジュールとして実行することを見てみましょう。 mod_php はすべての Linux バージョンのソフトウェア リポジトリで利用できるようになったので、インストールは簡単です。
PHP が Apache でモジュールとして実行される場合、PHP インタープリターは Apache プロセスに「埋め込まれます」。 Apache は外部 PHP プロセスを呼び出さないため、この方法により Apache と PHP の通信が向上します。ただし、この方法で PHP を実行すると、Apache が静的リソース (HTML など) のみを提供する場合でも、Apache の各子プロセスが mod_php をロードするため、通常よりも多くのメモリ オーバーヘッドが発生します。
この方法で実行するもう 1 つの欠点は、Apache でのみ機能することです。さらに、大規模な Web サイトには多くの静的リソースが含まれる可能性があり、これらの静的リソースは PHP プログラムによって解釈される必要がないため、この方法は小規模な VPS や大規模な Web サイトには適していません。
利点:
1. インストールとアップデートが簡単
2. 容量構成
短所:
1.Apacheでのみ動作可能
2. Apacheサブプロセスのメモリオーバーヘッドを増加しました
3. php.iniファイルを変更したら、Apacheを再起動する必要があります
高速CGI
FastCGI は、対話型プログラムと Web サーバー間の共通プロトコル インターフェイスであり、初期の CGI (Common Gateway Interface) の一種です。 CGI と比較して、FastCGI は Web サーバーとの対話コストを削減し、一度により多くのリクエストを処理できます。
Apacheはmod_fcgidの形でFastCGIを利用できます。 lighttpd、nginx、Cherokee、さらには Microsoft の IIS などの他の Web サーバーでも FastCGI を使用できます。 FastCGI を使用すると、複数のバージョンの PHP を同時にセットアップできるため、特定の状況では非常に役立ちます。
FastCGI は、独自の PHP インスタンスを使用するさまざまなユーザーをサポートするために suexec も使用します。この機能は、共有環境のセキュリティを向上させるために特に重要です。 FastCGI はパフォーマンスを保証するだけでなく、Web サーバーのメモリ オーバーヘッドも削減します。
利点:
1. ほとんどのWebサーバーと互換性があります
2. mod_phpよりメモリ使用量が少ないです
3. 複数のバージョンの PHP と suexec を含む、より多くの設定項目
デメリット
1. 複雑な構成
2. あまり知られていません
PHP-FPM(FastCGIプロセスマネージャー)
PHP-FPM は、Web サーバーが PHP を使用するための最新の方法であり、PHP FastCGI の別の実装でもあります。 PHP-FPM は、小規模な VPS や複数のサーバーで実行される Web アプリケーションに非常に役立ちます。同時に、FastCGI と互換性のある Web サーバーでも使用できます。
PHP-FPM を使用すると、管理者はクエリを失うことなく、PHP ワーカー プロセスを正常に停止および開始できます。これにより、クエリを失うことなく構成とバイナリを段階的に更新できるようになります。また、予期しない破損が発生した場合にプロセスを緊急に再起動することもできます。
利点:
1. ほとんどのWebサーバーと互換性があります
2. mod_phpよりメモリ使用量が少ないです
3. 複数のバージョンの PHP と suexec を含む、より多くの設定項目
デメリット
1. 複雑な構成
2. あまり知られていません
補足: Apache で PHP を実行する 4 つの方法
mod_php (DSO、動的共有オブジェクト)
CGI
補足
高速CGI
概要
内容が比較的抽象的で深く理解できませんが、今後の参考のために記録しておきます~:)
。