PHP-FPM provides a number of useful features over the traditional FastCGI php implementation. It is implemented as a daemon that controls one or more PHP process 'pools' which can be independently configured. Main configuration options for each pool include:
- Socket on which requests are received (either local or TCP)
php.inisettings for specific application requirements
- Dynamic process control. FPM can dynamically change the number of worker processes depending on pool load.
- Uid/gid for the pool workers
- In-flight configuration updates - a change to the pool configuration will be rolled out gracefully across all pool workers without losing connections.