Sobes.tech
Middle

PHP-FPM nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

PHP-FPM (FastCGI Process Manager), PHP için FastCGI süreç yöneticisidir ve standart PHP FastCGI'ye alternatifdir. Yüksek trafikli ortamlarda web isteklerinin işlenmesinde daha iyi performans sağlar. FPM, web sunucusundan (örneğin, Nginx veya Apache mod_proxy_fcgi modülü aracılığıyla) gelen istekleri bekleyen PHP süreç havuzunu yönetir.

FPM'nin temel özellikleri ve avantajları:

  • Süreç havuzu: FPM, bir dizi PHP sürecini oluşturur ve yönetir. Bu süreçler statik (sabit sayı), dinamik (gerektikçe belirli sınırlar içinde oluşturulur) veya talep üzerine (istek alındığında oluşturulur ve işlendiğinde sonlandırılır) olabilir. Bu, sistem kaynaklarının verimli kullanılmasını sağlar.
  • Daha iyi ölçeklenebilirlik: Süreç havuzunun yönetimi sayesinde, FPM aynı anda birçok isteği işleyebilir, bu da yüksek trafikli uygulamalar için kritiktir.
  • Süreç ayrımı: Her istek ayrı bir FPM süreci tarafından işlenir, bu da kararlılığı artırır. Bir isteğin hatası diğerlerini etkilemez.
  • Yapılandırma: Süreçlerin davranışını esnek şekilde yapılandırmaya olanak tanır, örneğin, süreç başına maksimum istek sayısı, süreç ömrü, bellek yönetimi.
  • Web sunucuları ile entegrasyon: FastCGI protokolü aracılığıyla popüler web sunucularıyla kolayca entegre edilir.

php-fpm.d/www.conf dosyasında süreç havuzunun yapılandırma örneği:

; Havuz adı
[www]

; Süreçlerin çalışacağı kullanıcı ve grup
user = www-data
group = www-data

; TCP soket üzerinde dinleme:
; listen = 127.0.0.1:9000
; ...veya Unix soket üzerinde:
listen = /run/php/php7.4-fpm.sock

; Süreç yönetim yöntemi:
; static - sabit süreç sayısı (`pm.max_children`)
; dynamic - dinamik süreç sayısı (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - talep üzerine oluşturulur (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic

; Başlangıçta dinamik modda çalışan çocuk süreçlerin sayısı
pm.start_servers = 5

; Her zaman çalışacak minimum çocuk süreç sayısı
pm.min_servers = 2

; Dinamik ve static/ondemand modlarda maksimum çocuk süreç sayısı
pm.max_children = 15

FPM olmadan, web sunucusu her PHP isteği için PHP yorumlayıcısını başlatmak zorunda kalırdı, bu da çok verimsiz olurdu. FPM, hazırda çalışan süreçleri tutarak bu sorunu çözer.