FastCGI Process Manager (FPM)


FPM (FastCGI Process Manager) est une implémentation alternative à PHP FastCGI avec quelques fonctionnalités additionnelles particulièrement utiles pour les environnements à haute charge.

Ces fonctionnalités incluent :

  • Gestion avancée des processus avec stop/start doux (graceful) ;

  • Possibilité de démarrer des processus avec différents uid/gid/chroot/environment, écoutant sur différents ports et utilisant différents php.ini (remplace le safe_mode) ;

  • Journalisation stdout et stderr ;

  • Redémarrage d'urgence en cas de destruction accidentelle du cache opcode ;

  • Support de l'upload acccéléré ;

  • "slowlog" - journalisation des scripts (pas juste leurs noms, mais leur backtrace PHP également, utilisant ptrace ou équivalent pour lire le processus distant) qui s'éxecutent de manière anormalement lente ;

  • fastcgi_finish_request() - fonction spéciale pour terminer la requête et vider toutes les données tout en continuant d'exécuter une tâche consommatrice (conversion vidéo par exemple) ;

  • Naissance de processus fils dynamic/static ;

  • Informations sur la SAPI (similaire à mod_status d'Apache) ;

  • Fichier de configuration basé sur php.ini

add a note add a note

User Contributed Notes 5 notes

robin at robinwinslow dot co dot uk
6 years ago
Init script setup

You will probably want to create an init script for your new php-fpm. Fortunately, PHP 5.3.3 provides one for you, which you should copy to your init directory and change permissions:

$ cp <php-5.3.3-source-dir>/sapi/fpm/ /etc/init.d/php-fpm
$ chmod 755 /etc/init.d/php-fpm

It requires a certain amount of setup. First of all, make sure your php-fpm.conf file is set up to  create a PID file when php-fpm starts. E.g.:
pid = /var/run/
(also make sure your php-fpm user has permission to create this file).

Now open up your new init script (/etc/init.d/php-fpm) and set the variables at the top to their relevant values. E.g.:

Your init script is now ready. You should now be able to start, stop and reload php-fpm:

$ /etc/init.d/php-fpm start
$ /etc/init.d/php-fpm stop
$ /etc/init.d/php-fpm reload

The one remaining thing you may wish to do is to add your new php-fpm init script to system start-up. E.g. in CentOS:

$ /sbin/chkconfig php-fpm on


Disclaimer: Although I did just do this on my own server about 20 mins ago, everything I've written here is off the top of my head, so it may not be 100% correct. Also, allow for differences in system setup. Some understanding of what you are doing is assumed.
joel k
6 years ago
the fpm process supports the USER2 signal, which is used to reload the config file.

kill -USR2 [pid]

should do the trick.
kokushibyou at gmail dot com
4 years ago
PHP-FPM is FAST - but be wary of using it while your code base is stored on NFS - under average load your NFS server will feel some serious strain. I have yet to find a work around for this bug:
dreamcat4 at gmail dot com
3 years ago
Doesn't work? Enable logging!

The php-fpm.log file is a great place to fault-find errors and get to the bottom of a problem. But be sure to enable logging for your specific worker pool. Or you won't see anything!


To enable error logging for the default [www] worker pool, add this line in the [www] section of your php-fpm.conf:

catch_workers_output = yes
user at NOSPAM dot example dot com
15 days ago
It is important to note that FPM is not built with the windows binaries.  Many of the guides you may find online rely on php-cgi.exe.  Unfortunately they call it FPM but this is incorrect!

The executable php-cgi.exe that is bundled with the windows binaries is a FastCGI interface but it is *not* FPM (Fastcgi Process Manager).  php-cgi.exe does not have multi-threading or concurrent request support, nor support for any of the FPM configuration options.

The only solid information I've gathered into why FPM is not available is a bug report explaining that FPM is built around fork(), which is not natively available on windows (
To Top