Middle
PHP-FPM nima?
sobes.tech AI
AIdan javob
PHP-FPM (FastCGI Process Manager) PHP uchun FastCGI jarayonlar menejeri bo‘lib, standart PHP FastCGI ga alternativdir. U yuqori yuklamali muhitlarda veb so‘rovlarni ishlash samaradorligini oshiradi. FPM veb-serverdan (masalan, Nginx yoki Apache mod_proxy_fcgi moduli orqali) kelayotgan so‘rovlarni kutayotgan PHP jarayonlar havuzini boshqaradi.
FPM ning asosiy xususiyatlari va afzalliklari:
- Jarayonlar havzasi: FPM PHP jarayonlarining to‘plamini yaratadi va boshqaradi. Bu jarayonlar statik (belgilangan son), dinamik (zarur bo‘lsa, belgilangan chegaralar doirasida yaratiladi) yoki talabga binoan (so‘rov qabul qilinganda yaratiladi va ishlov berilgandan so‘ng o‘chiriladi) bo‘lishi mumkin. Bu tizim resurslaridan samarali foydalanishni ta’minlaydi.
- Yaxshi kengaytiriluvchanlik: Jarayonlar havuzini boshqarish orqali, FPM bir vaqtning o‘zida ko‘p so‘rovlarni ishlay oladi, bu yuqori yuklamali ilovalar uchun juda muhim.
- Jarayonlarni ajratish: Har bir so‘rov alohida FPM jarayoni tomonidan ishlanadi, bu barqarorlikni oshiradi. Bir so‘rovning xatosi boshqalariga ta’sir qilmaydi.
- Sozlash: Jarayonlarning xulq-atvorini moslashuvchan sozlash imkonini beradi, masalan, jarayon uchun maksimal so‘rovlar soni, jarayonning umr davomiyligi, xotira boshqaruvi.
- Veb-serverlar bilan integratsiya: Mashhur veb-serverlar bilan FastCGI protokoli orqali osongina integratsiya qilinadi.
php-fpm.d/www.conf faylida jarayonlar havuzining sozlash misoli:
; Havza nomi
[www]
; Jarayonlar ishga tushadigan foydalanuvchi va guruh
user = www-data
group = www-data
; TCP soketda tinglash:
; listen = 127.0.0.1:9000
; ...yoki Unix soketda:
listen = /run/php/php7.4-fpm.sock
; Jarayonlarni boshqarish usuli:
; static - statik jarayonlar soni (`pm.max_children`)
; dynamic - dinamik jarayonlar soni (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - so‘rov qabul qilinganda yaratiladi (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Dinamik rejimda boshlang‘ich bolalar jarayonlar soni
pm.start_servers = 5
; Doim ishga tushadigan bolalar jarayonlarining minimal soni
pm.min_servers = 2
; Dinamik va static/ondemand rejimlarida maksimal bolalar jarayonlar soni
pm.max_children = 15
FPM bo‘lmasa, veb-server har bir PHP so‘rovi uchun PHP interpretatorini ishga tushirishi kerak bo‘lardi, bu juda noeffektiv bo‘lardi. FPM bu muammoni hal qiladi, tayyor jarayonlarni saqlab turish orqali.