Ben sigara parçacığı veya iş parçacığı güvenli gibi, PHP için farklı ikililer gördü? Ne demek bu? Bu paketleri arasındaki fark nedir?
Farklı web sunucuları paralel gelen HTTP isteklerini işlemek için farklı teknikler uygulamak. Oldukça popüler bir tekniktir Konuları kullanıyor - ki, web sunucusu gelen her istek için tek bir iplik adamak / yaratacaktır. Apache HTTP Web sunucusu istekleri işlemek için birden modellerini destekler, biri (İşçi MPM adlandırılır) Konuları kullanır. Ama başka bir eşzamanlılık modeli Süreçleri kullandığı prefork denilen destekler - Bu web sunucusu her istek için tek bir işlem adamak / yaratacaktır, olduğunu.
Diğer tamamen farklı eşzamanlılık (Asynchronous yuva / IO kullanılarak) modelleri yanı sıra, iki veya hatta üç modellerde karıştırmak olanları da vardır. Bu soruya cevap amaçla, biz sadece yukarıdaki iki model ile ilgilidir, ve bir örnek olarak Apache HTTP sunucusunu alıyor.
PHP kendisi gerçek HTTP isteklerine yanıt vermez - bu web sunucusunun işidir. Peki, biz ne işleme için PHP isteklerini iletmek için web sunucusu yapılandırın, daha sonra sonuç almak ve kullanıcıya geri göndermek. Zincir birden fazla yolu PHP ile web sunucusu vardır. Apache HTTP Sunucusu için, en popüler "mod_php" dir. Bu modül aslında PHP'nin kendisi ama web sunucusu için bir modül olarak derlenmiş, ve bu yüzden doğru içine yüklenen.
Apache ve diğer web sunucuları ile PHP zincirleme diğer yöntem vardır, ancak mod_php en popüler biridir ve aynı zamanda soruyu cevaplarken için hizmet edecektir.
Hosting firmaları ve GNU / Linux dağıtımları bizim için hazırlanan her şeyi ile geliyor, çünkü, daha önce bu ayrıntıları anlamak için gerekli olmayabilir.
Mod_php ile beri, PHP sağ Apache içine yüklenen Apache, onun İşçi MPM kullanıyorsanız eşzamanlılık idare edecek eğer PHP, bu aynı çok dişli bir ortamda içinde faaliyet gerekir (bu konu ile olduğunu) - anlamı, {[( 0)]}
Bu noktada, "Tamam, bu yüzden bir çok iş parçacıklı bir web sunucusu kullanarak yaşıyorum ve ben de bunun içine PHP gömmek için gidiyorum, sonra ben PHP evreli sürümünü kullanmanız gerekir" düşünme olmalıdır. Ve bu doğru düşünce olacaktır. Ancak, bu olur gibi, PHP'nin parçacığı-emniyet is highly disputed. Bu kullanım-eğer-sen-gerçekten-gerçekten-know-what-you-yapıyorsun zemin bulunuyor.
Eğer merak ediyorsanız durumda, benim kişisel tavsiyem seçim varsa not, bir çok iş parçacıklı ortamda PHP kullanmak olacaktır!
UNIX-tabanlı ortamlarda, sadece konuşan, ben size Apache prefork MPM (ile gitmek için tavsiye edilir, bu durumda, Apache web sunucusu ile PHP kullanmak için gidiyoruz eğer neyse, sadece bu düşünmek zorunda olduğunu söylemek istiyorum ki Konu kullanmak değildir, ve bu nedenle, PHP parçacığı emniyet farketmez) ve kendi paket sistemi ile Apache + PHP yüklerken biliyorum, tüm GNU / Linux dağıtımları bile size sormadan, sizin için karar alacak Bir seçim için. Böyle nginx veya lighttpd gibi diğer ağ sunucusunun kullanmak için gidiyoruz, zaten onlarla içine PHP embed seçeneği olmaz. Siz FastCGI veya PHP tamamen outside, örneğin aracılığıyla isteklerini yanıtlayarak için kullanılan birden fazla PHP süreçleri ile web sunucusu olan bir farklı bir model çalışır eşit şey kullanarak bakıyor olacak FastCGI. Bu gibi durumlar için, iplik-güvenlik de önemli değildir.
Ayrıca PHP Komut Satırı sürümünü bakarsanız - parçacığı emniyet farketmez.
Son olarak, iplik-emniyet böylece hangi sürümünü kullanmanız gerektiğini fark etmez - eğer parçacığı güvenli ya da olmayan-evreli? Açıkçası, ben bilimsel bir cevap yok! Ama ben olmayan-evreli sürümü daha hızlı ve / veya daha az hatalı, ya da aksi takdirde sadece evreli versiyonunu sundu ve bize seçim vermek için rahatsız değil olacağını tahmin ediyorum!
Yapılandırılması / yüklemek kolaydır çünkü modphp ile Apache MPM prefork kullanılır. performans bilge oldukça verimsiz. Yığını yapmak için tercih edilen yoldur, FastCGI / PHP-FPM. Bu şekilde çok daha hızlı MPM İşçi kullanabilirsiniz. Bütün PHP zinvirlenmemiş kalır ama apache (olması gerektiği gibi) dişli vermektedir
Yani temelde, alttan üstüne
Linux
Apache + MPM İşçi + ModFastCGI (NOT FCGI) | (veya) | Cherokee | (veya) | Nginx
PHP-FPM + APC
ModFCGI doğru PHP-FPM, ya da herhangi bir dış FastCGI uygulamaları desteklemiyor. Sadece sigara süreci yönetilebilir FastCGI komut dosyalarını destekler. PHP-FPM PHP FastCGI işlem yöneticisidir.