Ответ
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-запросов.