Advent Calendar 5日目 php-fpm is stable?

php の SAPI (Server API) にはいくつか種類があり、 一般的には Apache , Apache 2.0 Handler および CLI がよく使われているのではないかと思います。

現在実行している php が、どの SAPI で動いているのかを調べるには、 php_sapi_name 関数を使います。
あるいは、 phpinfo 関数によって表示される Server API の欄を見ても同様です。

SAPI とは

php 実行元 (主に Web Server) と php の間に挟まれた一種の抽象レイヤーです。

例えば、分かりやすいところで言うと、 Apache 上で実行した phpinfo() と CLI で実行した phpinfo() は、出力のされ方が異なります。 Apache 上では HTML として出力されますが、 CLI ではテキストとして出力されます。

(厳密に言えば、この違いは ext/standard/info.c で SAPI の状態に応じて出力の仕方を変えているだけなので、 SAPI による違いとは言い難いのですが……)

この SAPI 層があるおかげで、 Apache の上でも IIS の上でも、高速に php を動かすことが出来ます。

php-fpm

そんな SAPI の一つとして、 fpm (FastCGI Process Manager) というのがあります。
名前の通り、 phpFastCGI として動かせるようにしたものです。

以前、 Webサーバ勉強会で、 nginx X php-fpm という発表をさせていただきまして、
そのときの資料はこちらになります。

まとめのページに、

php-fpmはEXPERIMENTALなので、プロダクションでは使わないようにね!

と書いていたのですが、 実は RC2 になって、 EXPERIMENTAL では無くなっています。

https://svn.php.net/repository/php/php-src/tags/php_5_4_0RC2/NEWS

これでもう安心して php-fpm 使えますね!


まぁ、信じていると(足下を)掬われるのが php なんですが。