Middle
Ինչ է PHP-FPM-ը?
sobes.tech AI
Պատասխան AI-ից
PHP-FPM (FastCGI Process Manager) — սա FastCGI գործընթացների կառավարիչ է PHP-ի համար, որը փոխարինում է ստանդարտ PHP FastCGI-ին: Այն ապահովում է ավելի լավ կատարողականություն բարձր բեռնվածության միջավայրերում: FPM կառավարում է PHP գործընթացների պուլը, որոնք սպասում են մուտքային հարցումների՝ վեբ սերվերից (օրինակ՝ Nginx կամ Apache՝ mod_proxy_fcgi մոդուլով):
Հիմնական առանձնահատկություններն ու առավելությունները՝
- Процессային պուլ: FPM ստեղծում և կառավարում է PHP գործընթացների հավաքածու: Այս գործընթացները կարող են լինել ստատիկ (фиксավորված թիվ), դինամիկ (կազմվում են անհրաժեշտության դեպքում սահմանված սահմաններում) կամ on-demand (կազմվում են հարցում ստանալուց հետո և ոչնչացվում են՝ մշակելուց հետո): Սա թույլ է տալիս արդյունավետ օգտագործել համակարգային ռեսուրսները:
- Լավագույն մասշտաբայնություն: Процессների պուլը կառավարելով՝ FPM կարող է միաժամանակ մշակել բազմաթիվ հարցումներ, ինչը կարևոր է բարձր բեռնվածությամբ ծրագրերի համար:
- Процессների բաժանում: Յուրաքանչյուր հարցում մշակվում է առանձին FPM գործընթացով, ինչը բարձրացնում է կայունությունը: Միաժամանակ հարցման ձախողումը չի ազդի մյուսների վրա:
- Կոնֆիգուրացիա: Գործողությունները կարող են ճկուն կարգավորվել՝ օրինակ, առավելագույն հարցումների թիվը գործընթացում, գործընթացի կյանքի ժամանակը, հիշողության կառավարում:
- Ինտեգրացիա վեբ սերվերների հետ: Հեշտ է ինտեգրվել հանրահայտ վեբ սերվերների հետ՝ FastCGI պրոտոկոլով:
Նմուշ՝ php-fpm.d/www.conf պուլային կոնֆիգուրացիայի:
; Պուլի անուն
[www]
; Օգտագործող և խումբ, որոնց անունից կսկսվեն գործընթացները
user = www-data
group = www-data
; TCP socket-ով լսում:
; listen = 127.0.0.1:9000
; կամ Unix socket-ով:
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 լուծում է այս խնդիրը՝ պահելով պատրաստի աշխատանքային գործընթացներ։