Farklılıklar ve aralarındaki ilerlemeler: Hızlı-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM


73

Birkaç farklı php "sarmalayıcı" (?) Var. Aralarındaki farklar nelerdir? Bazılarını google’da denedim ama bilgi bulamıyorum. (mod-php googleable değildir).

Neden birini üst üste seçebilirim?

Yanıtlar:


141

Sorular biraz garip, sadece PHP için mi soruyorsun ya da sorunuz daha genel.

Size PHP tarafından kısa bir genel bakış sunacağım.

İlk olarak, iki protokol:

  • CGI komut dosyaları, bir HTTP isteği geldiğinde bir sunucu tarafı komut dosyasını çalıştırmanın bir yoludur; bunun PHP ile ilgisi yok

  • FastCGI "daha iyi bir CGI" dır - CGI'nın yavaş olduğu bilinir, Hızlı CGI çok daha hızlı sonuç veren farklı bir yaklaşımdır; Bunun PHP ile de ilgisi yok.

Şimdi PHP ilgili şeyler:

  • mod_php bir Apache modülü olarak bir PHP çalıştırıyor - bu PHP isteği Apache işlemi altında her şeyle birlikte çalıştırılıyor - Apache işlemleri Apache yapılandırması ile tanımlanıyor, PHP Apache izniyle çalışıyor.

  • PHP-FPM , PHP'nin FastCGI uygulamasıdır; PHP-FPM bağımsız bir FastCGI sunucusu olarak çalışır ve Apache, Apache'nin modülünü kullanarak, genellikle mod_fcgid veya mod_fastcgi; Şahsen bunun mod_php olarak çalışmaktan daha iyi olduğunu düşünüyorum, ancak gereksinimlerinize bağlı ve biraz daha karmaşık. Bu konfigürasyonda izin, işlemlerle ilgili işlemler ve her şey PHP konfigürasyonu, PHP kullanıcısı vb. altında çalıştırılır. Apache PHP'ye bir sunucuya bağlanır; Bu yapılandırmada, PHP sunucu havuzuna sahip olmak ve Apache'den fiziksel olarak farklı bir makinede PHP sunucusuna sahip olmak da mümkündür. Bunun Apache'nin modülünü kullanmak kadar hızlı olduğunu ve PHP yapılandırması üzerinde daha iyi kontrol sağlamanın faydaları olduğunu söylüyorlar.

  • SuPHP - bu çoğunlukla izinlerle ilgili mod_php'nin bazı sorunlarını çözmek için kullanılmıştır; mod_php ile PHP betikleri Apache kullanıcısı / grubu altında çalıştırılır; mod_suphp komut dosyalarını farklı kullanıcılarda çalıştırabilir; Hiç kullanmadım, PHP-FPM şimdi çok daha iyi bir seçim olmalı

Yani, temelde:

  • CGI, Fast-CGI protokollerdir; CGI yavaş, Hızlı CGI çok daha hızlı
  • mod_php (alt çizgi ile) ve PHP-FPM, PHP'yi çalıştırmanın iki temel yoludur
  • mod_SuPHP mod_php'ye benzer, ancak işlemin altında çalıştığı kullanıcıyı / grubu değiştirebilir

Belki bu soru için bana neyin ilham verdiğini netleştireceğim. ISPConfig paneline sahip bir VPS aldım (yönetici sayfalarına açılır panel). Orada sunucu / taraf için bir PHP sürümünü seçebilirim. Ve bunlar orada listelenir. Yani temelde PHP-FPM'i seçmenin FastCGI'i ek "sarmalayıcılar" ile seçtiği anlaşılıyor.
Gacek

12
ISPConfig panelinin gerçekte ne kullandığını bilmiyorum, ancak PHP PHP-FPM olarak çalışıyor, PHP'nin kendi yerleşik FastCGI sunucusunu başlatacak ve FastCGI protokolü aracılığıyla istekleri dinleyeceği anlamına geliyor. HTTP sunucusu internetten istekleri alacak, bunları genel olarak ele alacak ve bir sayfanın PHP kullanılarak çalıştırılması gerektiğinde, istek FastCGI protokolü üzerinden PHP'ye verilecek ve sonuç tarayıcıya geri gönderilecektir. Bunu tarayıcı ile PHP (PHP-FPM FastCGI) sunucusu arasında duran HTTP sunucusu olarak düşünün. PHP-FPM, FastCGI protokolünün bir uygulamasıdır.
Aleš Krajník

@ AlešKrajník, bu ayrıntılı açıklama için teşekkür ederiz. PHP'yi ayrı bir kullanıcı / grup olarak çalıştırmaya çalışıyorum. Bu yüzden Su-exec ile başladım ve çıkmaza girdim ve sonra birkaç kişi açıkladığınız php-fpm'yi önerdi. Bununla birlikte, hala mog_cgi, mod_cgid, mod_fastcgi, mod_fcgi modülleri ve bunların php-fpm ile nasıl çalıştığı konusunda kafam karıştı. Ayrıca mod_fcgid ve mod_proxy_fcgi kullandıkları başka bir derste okudum. Tüm parçaların nasıl bir araya geldiğini anlamak nasıl zor.
David Okwii

1
@landed PHP-FPM ikili değeri , belirli bir PHP sürümü için 5.3.3 veya 5.4.0'dan beri (PHP: php-fpm.org ) bu yana her PHP dağıtımının bir parçasıdır .
Aleš Krajník

2
php-fpm, başlatma maliyetlerinin kaldırılmasıyla ilgilidir. php-fpm, bazı php işlemlerini önceden başlatır, istekleri işleme koymaya hazırdır ve talepler gelinceye kadar uyumalarını sağlar - bu geleneksel cgi'den çok daha hızlı yanıt verebileceği anlamına gelir; Her istek için yeni bir php işleminin başlatıldığı yerlerde, php-fpm de istekleri işledikten sonra php işlemini kapatmaz, ancak aynı işlemleri tekrar kullanmaya devam eder. - 0 başlangıç ​​ve durdurma işleminin genel giderleri ile php-fpm çok daha hızlı yanıt verir. başlatma ve durdurma işlemleri zaman alır.
hanshenrik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.