今や、多くのWEBサイトで使用されているPHP。
人気CMSのWordPressもPHPで組まれており、プログラマー以外の方でも聞いたことのあるプログラム言語だと思います。
プログラムを実行する際には、CGI版とモジュール版、LiteSpeed版となるLSAPIの3つのいずれかの実行環境(動作モード)がよく利用されます。
さらに、CGIの処理速度を改善したFastCGIというものも存在しています。
PHPの実行環境でも、この4つの実行環境のいずれかが採用されており、気になっている方も多いはずです。
そこで、今回はPHPの動作環境として採用されるCGI版、FastCGI、モジュール版、LSAPIの4つについてまとめていきます。
PHPの実行環境は、WEBサーバーの仕様とも大きくかかわっており、WEBサイトの表示速度に影響します。
レンタルサーバーを選定する際の参考にしてみましょう。
最近は、ほとんど見かけませんが、HTMLとCSS、Javascriptのみで作られた静的なWEBサイトには影響しません。
PHPの4つの動作環境について
PHPの実行環境には、CGI版、FastCGI、モジュール版、LSAPIの4つが利用されることが多いです。
動作モードなどとも言いますが、PHPで書かれたプログラムを実際に実行するための環境になります。
それぞれに特徴がありますが、やはり、実行環境によってPHPの処理速度が異なります。
その為、CGI版、FastCGI、モジュール版、LSAPIのどの実行環境を採用するかで、WEBサイトの表示速度も変わってきます。
特に、PHPを使って開発されているWordPressを利用する場合には、大きく影響します。
現時点では、FastCGIやモジュール版PHPが、一般的にはよく採用されています。
ですが、最近では、LiteSpeed版と呼ばれるLSAPIを採用するレンタルサーバーも増えてきました。
また、格安サーバーでは、未だにCGI版PHPしか実行できないサービスも多いです。
そこで、レンタルサーバーをチェックする際には、この実行環境にも注目してみましょう。
CGI版
CGI(シージーアイ)とは、「Common Gateway Interface」の略になります。
クライアント(ブラウザなど)からのリクエストに応じて、WEBサーバーがプログラムを実行させる仕組みの一つです。
以前は、CGI言語と言えば、「=Perl」といったイメージがありました。
ですが、今はPerlの出番もほとんどなくなってきましたね。
CGIの大きな特徴は、WEBサーバーとは異なるプロセスで呼び出されて、スクリプトを実行される点です。
例えば、Nginx(エンジンエックス)というWEBサーバーは、PHPなどの動的プログラムを直接実行する能力がありません。
そこで、CGIを起動させてPHPを実行することになります。
CGI版を利用するメリットして上げられるのが、セキュリティ面です。
CGIは、WEBサーバーとは切り離されて実行されるため、WEBサーバーを実行するユーザーとCGIを実行するユーザーが異なります。
同一サーバー上の他ユーザーに干渉してしまう危険性を避けることができ、安定性も高いと言えます。
また、CGIは各プロセスを計測しやすく、サーバーに負荷をかけているユーザーを見つけやすいと言われています。
その為、複数の利用者で共有して使用しているレンタルサーバー(共用サーバー)では、CGIを用いるケースが多いです。
ただし、CGI版PHPでは、WEBサーバーと別プロセスでプログラムを実行することになります。
さらに、アクセスの度に「プロセスの生成→処理→終了」を繰り返す(毎回プロセスを生成する)ので、“CGI版PHPは遅くなるというデメリット“もあります。
・セキュリティが高い
・安定性が高い
・プロセスを管理しやすい
・メンテナンスしやすい
【デメリット】
・モジュール版PHPよりも遅い
CGIは、上記で説明したように、毎回プロセスを起動することになり、その分、WEBサイトの表示速度も遅くなってしまいます。
そこで、開発されたのがFastCGIになります。
FastCGI
FastCGIは、CGIをベースに開発されたプログラムの実行環境です。
上記で説明した通り、CGIでは、毎回プロセスというものを1つ生成することになり、処理速度が遅くなってしまいます。
そこで、生成したプロセスを、一定時間メモリ上に保持しておけるようにしたのがFastCGIです。
つまり、一度起動させたプログラムを終了させずにサーバー上に残しておいて、次回以降のプログラムの起動や終了といった処理を省略した仕組みになります。
毎回プロセスを起動・終了を行う必要が無く、それにより、処理にかかる時間を大幅に短縮することができます。
また、プロセスの起動・終了の回数を減らすことができ、CPUへの負荷も軽減することができます。
ただし、一定時間アクセスがないと、プロセスは終了してしまいます。
そうなると、再度プロセスを起動させることになるので、アクセス数の少ないWEBサイトではCGI版と大差がなくなる可能性もあります。
・CGIよりも処理にかかる時間を減らせる
・サーバー(CPU)への負荷を軽減できる
【デメリット】
・一定時間アクセスがないとプログラムが終了してしまう
- エックスサーバー
- スターサーバー
モジュール版
Nginxはプログラムを実行する能力がなく、外部のCGIを起動させて動的処理を実行させます。
それに対して、Apacheは、自身でプログラムを実行する能力を持ちます。
つまり、Apache内部でプログラムを実行できてしまうのが大きな特徴です。
Apacheを採用しているレンタルサーバーが多く、一般的に、モジュール版というと、このApacheのモジュール版を指しています。
モジュール版のメリットとしては、内部で他の処理と一括してプログラムの処理も行えるので、動作が単純という点です。
その為、CGIよりも速度が速いです。
ただし、Nginxは内部でPHPなどのプログラムの実行を行うことができず、モジュール版という考え方自体を持ちません。
ただし、モジュール版では、WEBサーバーの実行ユーザーが、プログラム処理も実行させています。
つまり、Apacheを起動させているユーザーが、そのままPHPを実行させることになります。
それだと、複数の利用者が共有している共用サーバーでは、処理が集中してしまうと別ユーザーのPHPスクリプトを読み込んでしまう危険性も指摘されています。
また、ユーザー毎のPHPの実行プロセス管理を行いにくいのもデメリットも、モジュール版には存在します。
その為、セキュリティ上の問題とプロセス管理のしやすさで、Apacheを実装しているレンタルサーバーでも、CGI版PHPを採用しているケースもあります。
・速度が速い
【デメリット】
・ユーザー同士で処理が干渉してしまうセキュリティ上のリスクもある
・ユーザー毎のプロセス管理を行えない
- ミニポップ
LiteSpeed LSAPI
LSAPIは、「LiteSpeed Server API」の略になります。
LiteSpeed版のPHP実行環境といったところで、FastCGIと動作が似ています。
ですが、FastCGIよりも高速に処理を実行できるのが特徴です。
その為、最近ではLSAPIを採用しているレンタルサーバーも増えています。
因みに、LSAPIは、LiteSpeed専用の実行環境ではなく、WEBサーバとしてNginxやApacheを採用しているサーバーでも利用することができます。
例えば、人気のサービスであれば、Conoha WINGがLSAPIを採用しています。
・FastCGIよりも速度が速い
【デメリット】
・情報量が少ない
LSAPIの一番のデメリットは、まだ情報量が少ないところです。
共用サーバーを利用する場合は深い知識は不要ですが、VPSや専用サーバーを借りて自分でインストールする場合には不便ですね。
- Conoha WING
- ミックスホスト
- ロリポップのベーシックプラン以上
- カラフルボックス
4つの動作環境を比較
今回紹介した4つのPHP動作環境の速度を比較すると、このようになります。
CGI版は、処理の方法からモジュール版よりも速度が遅いです。
ですが、FastCGIとモジュール版は、同程度の処理速度と言われています。
LSAPIに関しては、FastCGIと動作が似ているにもかかわらず、より最適化されているためにFastCGIよりも高速と言われています。
もちろん、WEBサイトの表示速度は、ストレージやWEBサーバー、CPU性能、通信規格(HTTP/2やHTTP/3)なども影響します。
ですが、レンタルサーバーを選定する際には、PHPの動作環境も気にしてチェックしてみましょう。
最後に
今回は、PHPの動作環境(動作モード)であるCGI版、FastCGI、モジュール版、LiteSpeed LSAPIについてまとめました。
もちろん、PHP専用ということではなく、PythonやRubyなど他のプログラムも実行することができます。
基本的には、FastCGIかLSAPIを実行できるレンタルサーバーをおすすめします。
ですが、動作環境によって、処理速度やセキュリティ強度も異なります。
レンタルサーバーを利用する際には、どの動作環境を採用しているかもチェックしてみましょう。