Web sunucunuzdaki web siteleriniz için PHP-CGI veya PHP-FPM kullanmak kafanız mı karıştı? Bu yazıda PHP-CGI ve PHP-FPM ile ilgili bazı bilgileri paylaşacağız.

PHP’yi web sunucusu üzerinden çalıştırırken iki farklı seçenek vardır: PHP’nin CGI kullanarak çalıştırmak veya web sunucusu için PHP-FPM olarak çalıştırmak.

PHP-CGI ve PHP-FPM hakkında bazı temel bilgileri öğrenelim.

PHP-CGI

Bir Web sunucusu ile bir CGI programı arasında bilgi aktarımı için bir özellik “protokolü” dür. Bir CGI programı, CGI spesifikasyonuna uyan verileri kabul etmek ve döndürmek için tasarlanmış herhangi bir programdır. Temel olarak, bir HTTP isteği geldiğinde sunucu tarafı bir komut dosyası (PHP, Perl, Python) çalıştırmanın bir yoludur.

PHP betiklerini bir CGI uygulamasıyla çalıştırmak, uygulamaları bir web sunucusunda çalıştırmanın eski yoludur, oldukça verimsizdir ve nadiren kullanılır.

CGI üzerinde uygulama çalıştırmanın bir yararı, kod yürütmeyi web sunucusundan ayrı tutmasıdır, bu da bazı ek güvenlik avantajları sağlar. Örneğin, PHP-CGI aracılığıyla çalıştırılan hatalı veya güvenli olmayan bir PHP komut dosyası, barındırıldığı etki alanının dışındaki diğer dosyaların güvenliğini bozamaz veya etkileyemez. Ayrıca, PHP yorumlayıcısının yalnızca gerektiğinde çağrıldığı, dolayısıyla statik içeriğin yalnızca web sunucusu tarafından sunulmasına izin verildiği anlamına gelir.

PHP’yi CGI desteği ile çalıştırmanın verimsizliği, her PHP kodunun çalıştırılması gerektiğinde yeni bir işlemin oluşturulmasını gerektirmesinden kaynaklanır. Tahmin edebileceğiniz gibi, daha yoğun sitelerde veya PHP tabanlı uygulamalarda çok kaynak yoğun olabilir.

PHP’yi bir CGI olarak çalıştırmak, temel olarak web sunucunuza PHP çalıştırılabilir dosyasının konumunu söylediğiniz anlamına gelir ve sunucu, bir sayfayı her ziyaret ettiğinizde aradığınız komut dosyasını vererek bu yürütülebilir dosyayı çalıştırır. Bu, bir sayfayı her yüklediğinizde, PHP’nin php.ini’yi okuması ve ayarlarını yapması gerektiği, tüm uzantılarını yüklemesi gerektiği ve ardından betiği ayrıştırmaya başlaması gerektiği anlamına gelir – çok sayıda tekrarlanan çalışma vardır.

Yine de CGI sürümünü kullanmanın önemli bir avantajı vardır ve o da, bir sayfayı her yüklediğinizde PHP’nin ayarlarını okmasıdır. PHP’nin bir modül olarak çalışmasıyla, php.ini dosyasında yaptığınız herhangi bir değişiklik, web sunucunuzu yeniden başlatana kadar devreye girmez; bu, çok sayıda yeni ayarı test ediyorsanız ve anında yanıtlar görmek istiyorsanız CGI sürümünü tercih edilebilir kılar.

Artıları

PHP kod yürütme bir web sunucusundan izole edildiğinden, FPM’den daha iyi güvenlik sağlar.

Eksileri

Uygulamaları çalıştırmanın eski yolu.
Daha yoğun web siteleri için çok düşük performans.

 

PHP-FPM

PHP FastCGI Process Manager (PHP-FPM), bir web sitesinin yorucu yükleri kaldırmasına olanak tanıyan PHP için alternatif bir FastCGI arka plan programıdır. PHP-FPM bunu başarmak için havuzları (PHP isteklerine yanıt verebilen çalışanlar) korur. PHP-FPM, çok kullanıcılı PHP ortamları için SUPHP gibi geleneksel CGI tabanlı yöntemlerden daha hızlıdır. Apache işlemlerinden gelen PHP ile bir sistemin belleğini aşırı yüklemez.

PHP-FPM özellikleri şunları içerir:

  • Uyarlanabilir süreç yumurtlama.
  • Temel istatistikler (ala Apache mod_status)
  • Zarif durdurma / başlatma ile gelişmiş süreç yönetimi
  • Çalışanları farklı uid / gid / chroot / ortam ve farklı php.ini ile başlatma yeteneği (safe_mode’un yerini alır)
  • Standart çıkış ve stderr günlüğü.
  • Kazara opcode önbelleğinin yok edilmesi durumunda acil yeniden başlatma.
  • Hızlandırılmış yükleme desteği.
  • “Slowlog” desteği.
  • Fastcgi_finish_request () gibi FastCGI iyileştirmeleri – zaman alıcı bir şey yapmaya devam ederken (video dönüştürme, istatistik işleme, vb.) İsteği bitirmek ve tüm verileri temizlemek için özel bir işlev

Artıları

Uygulamaları çalıştırmak için modern ve optimize edilmiş bir yönteme sahiptir.
Daha yoğun web siteleri ve düşük kaynak tüketimi için güçlü performans.
Daha küçük bellek alanı, diğer sorguları durdurmadan zarif yeniden yükleme.

Eksileri

PHP-CGI ile karşılaştırıldığında düşük güvenlik.
PHP-CGI’dan daha fazla yapılandırma gerektirir.

Hangisi tercih edilmelidir?

Bana göre, yoğun bir web siteniz varsa ve alt uç sunucu kaynaklarına sahipseniz ve sunucuyu yükseltmek istemiyorsanız, düşük kaynak hogger olduğundan PHP-FPM kullanılmalıdır. CGI kullanılırsa, temel web sunucusu işlemi kilitlenme durumuna neden olabilir ve bu da web sitesinin kapalı kalma süresine yol açabilir.

Temel bir web siteniz ve düşük trafiğiniz varsa, o zaman PHP-CGI kullanmalısınız çünkü daha iyi PHP kodu Yürütme özelliği vardır ve küçük ve düşük trafikli web sitelerinde çok sayıda kaynak kullanmaz.