Sobes.tech
Middle

PHP-FPM nədir?

sobes.tech Süni İntellekt

AI-dan cavab

PHP-FPM (FastCGI Process Manager) PHP üçün FastCGI proses meneceridir və standart PHP FastCGI-ə alternativdir. Yüksək yüklü mühitlərdə veb sorğuların işlənməsində daha yaxşı performans təmin edir. FPM, veb serverdən (məsələn, Nginx və ya Apache mod_proxy_fcgi modulu vasitəsilə) gələn daxil olan sorğuları gözləyən PHP proseslər hovuzunu idarə edir.

FPM-nin əsas xüsusiyyətləri və üstünlükləri:

  • Proses hovuzu: FPM, PHP proseslərinin bir qrupunu yaradır və idarə edir. Bu proseslər statik (sabit say), dinamik (lazım olduqda müəyyən hədlər daxilində yaradılır) və ya tələb əsasında (sorğu alındıqda yaradılır və işlədikdən sonra silinir) ola bilər. Bu, sistem resurslarından səmərəli istifadəni təmin edir.
  • Daha yaxşı miqyaslana bilmə: Proses hovuzunun idarə olunması sayəsində, FPM çox sayda eyni vaxtda gələn sorğuları işləyə bilər ki, bu da yüksək yüklü tətbiqlər üçün vacibdir.
  • Proseslərin ayrılması: Hər sorğu ayrı bir FPM prosesi tərəfindən işlənir, bu da stabilliyi artırır. Bir sorğunun xətası digərinə təsir etməz.
  • Konfiqurasiya: Proseslərin davranışını elastik şəkildə tənzimləməyə imkan verir, məsələn, proses başına maksimum sorğu sayı, prosesin ömrü, yaddaş idarəsi.
  • Veb serverlərlə inteqrasiya: Populyar veb serverlərlə FastCGI protokolu vasitəsilə asanlıqla inteqrasiya olunur.

php-fpm.d/www.conf faylında proses hovuzunun konfiqurasiya nümunəsi:

; Hovuz adı
[www]

; Proseslərin işləyəcəyi istifadəçi və qrup
user = www-data
group = www-data

; TCP socket-də dinləmə:
; listen = 127.0.0.1:9000
; ...və ya Unix socket-də:
listen = /run/php/php7.4-fpm.sock

; Proses idarəetmə üsulu:
; static - sabit proses sayı (`pm.max_children`)
; dynamic - dinamik proses sayı (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - sorğu alındıqda yaradılır (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic

; Dinamik rejimdə başlanğıc uşaq proseslərinin sayı
pm.start_servers = 5

; Həmişə işləyəcək minimum uşaq proseslərinin sayı
pm.min_servers = 2

; Dinamik və static/ondemand rejimlərində maksimum uşaq proseslərinin sayı
pm.max_children = 15

FPM olmasa, veb server hər PHP sorğusu üçün PHP interpretatorunu işə salmalı olardı ki, bu çox qeyri-effektiv olardı. FPM bu problemi həll edir, hazırda işlək prosesləri saxlayaraq.