Что такое PHP-FPM и для чего он используется?

«Что такое PHP-FPM и для чего он используется?» — вопрос из категории PHP Core, который задают на 28% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PHP-FPM (FastCGI Process Manager) — это высокопроизводительный менеджер процессов PHP, реализующий протокол FastCGI. Он используется как отдельный сервис для обработки PHP-скриптов, работая совместно с веб-серверами (Nginx, Apache).

Основные задачи и преимущества:

  • Отделение веб-сервера от обработчика PHP: В отличие от mod_php (встроенного модуля Apache), FPM работает как независимый демон. Это повышает стабильность и позволяет перезапускать PHP без остановки веб-сервера.
  • Гибкое управление процессами: Поддерживаются различные режимы (static, dynamic, ondemand) для контроля числа воркеров, что критично для управления памятью и нагрузкой.
  • Изоляция окружений: Можно создавать отдельные пулы (pools) для разных сайтов или приложений с уникальными настройками php.ini, пользователями и группами Linux.
  • Эффективная обработка высоких нагрузок: Механизмы предзапуска воркеров и адаптивного пула минимизируют задержки при пиковых запросах.

Базовая конфигурация связки Nginx + PHP-FPM:

# В конфиге Nginx (site.conf)
location ~ .php$ {
    fastcgi_pass   unix:/var/run/php/php8.2-fpm.sock; # Или 127.0.0.1:9000
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Ключевые настройки пула в www.conf:

; Режим управления процессами
pm = dynamic
; Максимальное число дочерних процессов
pm.max_children = 50
; Число процессов, запускаемых при старте
pm.start_servers = 5
; Минимальное число простаивающих процессов
pm.min_spare_servers = 2
; Максимальное число простаивающих процессов
pm.max_spare_servers = 10

Типичный сценарий использования: На проектах с высокой посещаемостью или микросервисной архитектурой, где требуется стабильная и масштабируемая обработка PHP-запросов.