どうもUT(@ut_1029)です。ブログ(UTの日常)の紹介です。
PHP-fpmでプログラミングしているとあまり気にしていなかったんですが、PHP-fpmの環境構築や設定などするにあたり、何も知らないなぁっと自分で感じたので、基本的なことを調べることにしました。
これまでは、PHPの設定とかは
ただググってとりあえず動けばOK
って感じでした。
でも、
細かなチューニングや正しい設定となるとお手上げでした。。。
それで
少しでも理解できればと思い本記事を書きました。
今回、以下の事を中心に調べてみました。
- PHP-fpmってなに?
- CGIとかFastCGIってなに?
- PHP-fpmはPHPと何が違うの?
- NginxとPHP-fpmの連携ってどうなってるの?
などなど。
では、
PHP-fpmで知っておくべき知識について
まずはこちらから紹介します。
PHPとは
PHP : Hypertext Preprocessor
Webシステムの作成によく使われるプログラム言語のひとつ。
ポイントは
pointプログラミング言語だよ
pointスクリプト言語だよ
pointWeb系のプログラムを作るときによく使われるよ「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
広く使われているオープンソースの汎用スクリプト言語です。
PHP は、特に Web 開発に適しており、HTML に埋め込むことができます。
PHP: PHPとはなんでしょう?
あと、
PHPの詳しい動作について書かれている記事がありましたので、紹介しておきます。
知っていますか?あなたの書いたPHPのコードが実行される4つのプロセス
ちなみに
PHPは、インタープリタ言語とコンパイラ言語どちらでしょうか?
正解は、
インタープリタ言語
です。
コンパイラ言語
コンパイラ言語は、プログラム作成後にコンパイルを行う必要があります。
インタープリタ言語
インタープリタ言語は、プログラムを実行する度の機械語へ変換されます。
なので、コンパイルを行うこと必要がありません。
また
PHPには、モジュール版とCGI版の二種類があります。
これが、
PHP-fpmとPHPの違いの第1歩です。
CGI版
Webサーバとは別のプロセスで実行される。
Webサーバとは別プロセスで動作ということは、実行する度にメモリのロードが必要となります。
その為、動作速度がモジュール版に比べて遅くなります。
モジュール版
WebサーバのプロセスのなかでPHPを実行する方法。
CGIに比べて動作速度が高速になります。
CGIとは
Common Gateway Interface の略。
すごくかみ砕くと
ホームページでプログラムを動かすための仕組み
だそうです。
つまりは
- 掲示板サイト
- ショッピングサイト
など
は、CGIの仕組みでプログラムを動かしているWebサイトになります。
ポイントは、
- pointWebサーバ上でプログラムを動かすための仕組みだよ
- pointWebサーバ上で(クライアントからの要求に応じて)動くプログラムを指していることもあるよ
- point動的にページを生成して返すよ
FastCGIとは
CGIの改良版で
Webサーバのプログラムを一度起動させたら、しばらくメモリ上へ保持し待機させる仕組み
だそうです。
一度起動させたプログラムを待機させることで
プログラムの起動や終了の処理を軽減させ、Webサーバの負荷軽減が期待できます。
一定期間待機しているプログラムはメモリ上に展開されます。
この用語のポイント
- pointCGIの改良版だよ
- point一度動き出したプログラムは、しばらくメモリ上に待機させるよ
- point起動/終了処理が減る分、CGIと比較して、処理の高速化と負荷の軽減が見込めるよ