php fastcgi process manager logo

К сожалению, PHP в том виде, в котором он доступен с сайта php.net имеет ряд известных проблем связанных с использванием FastCGI SAPI в production.

Ниже приведены убедительные доказательства, почему при использовании FastCGI SAPI Вам будет сложно обойтись без php-fpm:

Проблемы
Описание php
"out of the box"
spawn-fcgi +
spawn-php.sh +
daemontools
php-fpm
php daemonization: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+)
Управление процессами. Возможность "плавно" останавливать и перепускать php воркеры без потери запросов. Возможность плавно обновлять конфигурацию и binary без потери запросов. php4 (-)
php5 (только плавное завершение)
(-) (+)
Ограничение ip адресов, с которых могут приходить запросы от web сервера php4 (-)
php5 (+) (from 5.2.2)
(-) (+)
Динамическое количество процессов, в зависимости от нагрузки (-) (-) TODO
Запуск воркеров с разными uid/gid/chroot/environment и разными php.ini опциями. Больше не нужен safe mode ! (-) (-) (+)
Логирование stdout & stderr рабочих процессов (-) (-) (+)
Аварийный перезапуск всех процессов при случайном разрушении shared memory opcode cache, если используется акселератор (-) (-) (+)
Принудительное завершение подвисших процессов, если set_time_limit() не срабатывает (-) (-) testing
Фирменные фичи
Error header (+)
Accelerated upload support (+)
fastcgi_finish_request() (+)