Sobes.tech
Middle

Kas yra PHP-FPM?

sobes.tech AI

Atsakymas iš AI

PHP-FPM (FastCGI Process Manager) — tai yra FastCGI procesų valdytojas PHP, alternatyva standartiniam PHP FastCGI. Jis užtikrina geresnį našumą apdorojant žiniatinklio užklausas didelės apkrovos aplinkose. FPM valdo PHP procesų baseiną, kurie laukia įeinančių užklausų iš žiniatinklio serverio (pavyzdžiui, Nginx ar Apache per mod_proxy_fcgi modulį).

Pagrindinės savybės ir pranašumai:

  • Procesų baseinas: FPM kuria ir valdo PHP procesų rinkinį. Šie procesai gali būti statiniai (fiksuotas skaičius), dinamiški (sukuriami pagal poreikį nustatytose ribose) arba on-demand (sukuriami gavus užklausą ir sunaikinami po apdorojimo). Tai leidžia efektyviai naudoti sisteminius išteklius.
  • Geresnis mastelio keitimas: Valdant procesų baseiną, FPM gali apdoroti daugybę vienu metu gaunamų užklausų, kas yra kritiška didelės apkrovos programoms.
  • Procesų atskyrimas: Kiekviena užklausa apdorojama atskiru FPM procesu, kas didina stabilumą. Nesėkmė vienoje užklausoje nepaveiks kitų.
  • Konfigūracija: Leidžia lankstiai nustatyti procesų elgseną, pavyzdžiui, maksimalų užklausų skaičių procese, proceso gyvavimo laiką, atminties valdymą.
  • Integracija su žiniatinklio serveriais: Lengvai integruojasi su populiariais žiniatinklio serveriais per FastCGI protokolą.

Pavyzdys php-fpm.d/www.conf proceso baseino konfigūracijai:

; Baseino pavadinimas
[www]

; Vartotojas ir grupė, kurių vardu bus paleisti procesai
user = www-data
group = www-data

; Klausymas TCP lizdu:
; listen = 127.0.0.1:9000
; arba Unix lizdu:
listen = /run/php/php7.4-fpm.sock

; Procesų valdymo metodas:
; static - fiksuotas procesų skaičius (`pm.max_children`)
; dynamic - dinamiškas procesų skaičius (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - sukuriamas gavus užklausą (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic

; Pradinis vaikų skaičius paleidus režimu dynamic
pm.start_servers = 5

; Minimalus vaikų skaičius, kuris visada bus paleistas režimu dynamic
pm.min_servers = 2

; Maksimalus vaikų skaičius režimu dynamic ir static/ondemand
pm.max_children = 15

Be FPM žiniatinklio serveriui kiekviena PHP užklausa turėtų paleisti PHP interpretatorių, kas yra labai neefektyvu dėl išlaidų. FPM išsprendžia šią problemą, palaikydamas paruoštus darbui procesus.