Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
PHP-FPM, PHP betiklerini web sunucusundan ayrı çalışan işçi süreçleriyle yürütmek için kullanılan FastCGI Process Manager bileşenidir. PHP-FPM kullanan bir kurulumda Nginx veya Apache gibi web sunucuları PHP dosyasını doğrudan yorumlamak yerine isteği PHP-FPM’ye iletir; PHP-FPM betiği çalıştırır, sonucu web sunucusuna geri verir ve web sunucusu bu sonucu ziyaretçiye gönderir.

PHP-FPM nasıl çalışır?​


Bir PHP isteğinde genel akış şöyledir:

  1. Ziyaretçi bir PHP sayfasına istek gönderir.
  2. Web sunucusu, isteğin PHP tarafından işlenmesi gerektiğini belirler.
  3. Web sunucusu isteği FastCGI protokolüyle PHP-FPM’nin dinlediği sokete veya TCP adresine iletir.
  4. İstek uygun bir işçi süreç tarafından alınır ve PHP kodu çalıştırılır.
  5. Üretilen HTML, JSON veya başka çıktı web sunucusuna geri gönderilir.
  6. Web sunucusu yanıtı istemciye iletir.

PHP-FPM’nin kendisi genellikle bir ana süreç ve birden fazla işçi süreçten oluşur. Ana süreç işçileri yönetir; işçiler ise gelen PHP isteklerini işler. Bu yapı, her istek için baştan yeni bir PHP programı başlatma ihtiyacını azaltarak kaynakların daha düzenli kullanılmasını sağlar.

PHP-FPM havuzu nedir?​


PHP-FPM, ayarları ayrı tutulabilen havuzlarla çalışır. Bir havuz; işçi sayısı, süreçlerin ne zaman oluşturulacağı, isteklerin ne kadar sürebileceği ve günlüklerin nereye yazılacağı gibi davranışları belirler.

Örneğin aynı sunucuda birden fazla PHP uygulaması varsa her uygulama için ayrı havuz kullanılabilir. Böylece uygulamaların kullanıcıları, çalışma kullanıcısı veya kaynak sınırları birbirinden ayrılabilir. Ancak her havuz ve işçi ek bellek kullandığından, gereğinden fazla havuz veya süreç oluşturmak performansı artırmaz.

Soket mi, TCP mi?​


Web sunucusu ile PHP-FPM arasındaki bağlantı çoğunlukla iki yöntemden biriyle kurulur. Aynı makinedeki servislerde yerel Unix soketi tercih edilebilir; farklı makinelerde veya özel ağ topolojilerinde TCP bağlantısı kullanılabilir.

BağlantıUygun kullanımKontrol
Unix soketiAynı makinedeki servislerDosya yolu ve erişim izni
Özel ağdaki TCPFarklı makinelerDinleme adresi ve ağ sınırları
Yerel TCPAynı makinede port üzerinden bağlantıPort ve gerçek hedefin eşleşmesi

Bağlantı yöntemi tek başına PHP uygulamasını hızlandırmaz. Asıl sorun çoğu zaman yanlış soket yolu, izin uyuşmazlığı, yetersiz işçi sayısı veya uzun süren PHP işlemleridir.

PHP-FPM kullanırken pratik kontrol sırası​


Bir PHP sitesi çalışmıyorsa sorunu katmanlara ayırarak ilerleyin:

  1. PHP-FPM servisinin çalıştığını ve başlatma sırasında hata vermediğini kontrol edin.
  2. Web sunucusunun FastCGI hedefinin PHP-FPM’nin gerçekten dinlediği Unix soketi veya TCP adresiyle aynı olduğunu doğrulayın.
  3. Unix soketi kullanılıyorsa web sunucusunun bu sokete erişebildiğini kontrol edin. Yanlış dosya izni veya sahiplik, bağlantı hatasına neden olabilir.
  4. Basit bir PHP dosyasına erişerek web sunucusu ile PHP-FPM arasındaki iletişimin çalıştığını test edin. Yanıt yerine indirme veya sunucu hatası görülüyorsa PHP isteği PHP-FPM’ye aktarılmıyor olabilir.
  5. İstekler zaman aşımına uğruyorsa PHP-FPM günlüklerini, web sunucusu günlüklerini ve uygulamanın uzun süren veritabanı işlemlerini birlikte inceleyin.
  6. Tüm işçiler doluysa havuzun işçi sınırını körlemesine yükseltmek yerine sunucunun belleğini, istek sürelerini ve uygulamanın neden uzun çalıştığını değerlendirin.

Başarılı testte PHP dosyasının çıktısı web sunucusu üzerinden normal biçimde görünür. Bu belirtiler olası nedenlere işaret eder, tek başına nedeni kanıtlamaz. Bağlantı, günlük ve uygulama süresini birlikte karşılaştırın.

Sık yapılan hatalar​


PHP-FPM’yi web sunucusu sanmak: PHP-FPM statik dosyaları sunmaz ve tek başına HTTP sunucusu değildir. PHP isteklerini işleyen arka uç bileşenidir.

Soket yolunu yalnızca bir yerde değiştirmek: PHP-FPM’nin dinleme adresi ile web sunucusunun FastCGI hedefi aynı olmalıdır. Bir taraf değiştirilip diğeri eski bırakılırsa bağlantı kurulamaz.

İşçi sayısını gereğinden fazla artırmak: Her işçi bellek tüketir. Fazla süreç, yoğunlukta çözüm olmak yerine takas kullanımına ve daha yavaş yanıtlara yol açabilir.

Yalnız PHP-FPM günlüğüne bakmak: İstek web sunucusundan PHP-FPM’ye hiç ulaşmıyorsa hata web sunucusu günlüğünde görülür. Teşhiste iki günlük birlikte incelenmelidir.

Sık sorulan sorular​

php -v çıktısı web sitesinin PHP sürümünü kanıtlar mı?​

Hayır. Komut satırı çalıştırıcısı ve web isteğini karşılayan FPM havuzu farklı sürüm veya yapılandırma kullanabilir. Hosting panelinde siteye atanmış havuzu ve web sunucusunun hedefini kontrol edin. CLI’de bir eklentinin bulunması web sürecinde de etkin olduğunu göstermez.

Farklı havuzlar sanal makine gibi tam izolasyon sağlar mı?​

Hayır. Ayrı kullanıcı, soket ve ayarlar erişimi düzenlemeye yardımcı olabilir; fakat aynı sistemin çekirdek ve kaynaklarını paylaşırlar. Dosya izinleri, ağ erişimi ve uygulama sırları ayrıca tasarlanmalıdır. Havuz sayısını artırmak tek başına tam güvenlik sınırı kurmaz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.