Middle
Какво е PHP-FPM?
sobes.tech AI
Отговор от AI
PHP-FPM (FastCGI Process Manager) — това е мениджър на процеси FastCGI за PHP, алтернативен на стандартния PHP FastCGI. Той осигурява по-добра производителност при обработка на уеб заявки в среди с висока натовареност. FPM управлява пул от PHP процеси, които очакват входящи заявки от уеб сървър (например Nginx или Apache чрез модула mod_proxy_fcgi).
Ключови характеристики и предимства на FPM:
- Пул от процеси: FPM създава и управлява набор от PHP процеси. Тези процеси могат да бъдат статични (фиксирано число), динамични (създават се при необходимост в зададени граници) или on-demand (създават се при получаване на заявка и се унищожават след обработка). Това позволява ефективно използване на системните ресурси.
- По-добра мащабируемост: Чрез управлението на пул от процеси, FPM може да обработва множество едновременно идващи заявки, което е критично за високонагружени приложения.
- Разделяне на процесите: Всяка заявка се обработва от отделен FPM процес, което повишава стабилността. Провал на една заявка няма да засегне другите.
- Конфигурация: Позволява гъвкаво настройване на поведението на процесите, например, максимален брой заявки на процес, време на живот на процеса, управление на паметта.
- Интеграция с уеб сървъри: Лесно се интегрира с популярни уеб сървъри чрез протокола FastCGI.
Пример за конфигурация на пул от процеси в php-fpm.d/www.conf:
; Име на пула
[www]
; Потребител и група, от името на които ще се стартират процесите
user = www-data
group = www-data
; Слушане на TCP сокет:
; listen = 127.0.0.1:9000
; ...или на Unix сокет:
listen = /run/php/php7.4-fpm.sock
; Метод за управление на процесите:
; static - фиксирано количество процеси (`pm.max_children`)
; dynamic - динамично количество процеси (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - създава се при получаване на заявка (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Начално количество дочерни процеси при стартиране в режим dynamic
pm.start_servers = 5
; Минимално количество дочерни процеси, които винаги ще бъдат стартирани в режим dynamic
pm.min_servers = 2
; Максимално количество дочерни процеси в режим dynamic и static/ondemand
pm.max_children = 15
Без FPM уеб сървърът за всяка PHP заявка трябваше да стартира интерпретатора PHP, което е много неефективно поради разходите. FPM премахва този проблем, като поддържа готови за работа процеси.