Ne zaman bir PHP komut dosyası biter?

2 Cevap

Aklımda, sürekli çalışan bir web uygulaması bir şey; Bu nedenle, ben bir PHP komut dosyası "sonunda" hakkında konuşmak dokümantasyon sayfalarına kafamı karıştırdı (örneğin this one). Bu referanslar her web isteği sonuna kadar başvurmak gibi görünüyor, ama senaryo var biterse, bu işletim sistemi kurulum için her istek için yepyeni bir süreç olduğu anlamına gelmez? Yani yepyeni bir süreç iplik kadar pahalı olduğundan, olası görünüyor ve bütün site için çok verimsiz olabilir.

2 Cevap

Burada yapmak için bir ayrım var: PHP bir web sunucusu değil. Bu nedenle, bir PHP komut dosyası uç web sunucusu (ya da en azından, çoğu zaman) gerçek sonuna kadar alakasız.

Sürekli IIS gibi, Apache veya Lighttpd kendilerini biten olmadan PHP komut yürütebilirsiniz, koşmak Web sunucusu yazılımı. Bu komut dosyaları, sonunda, do çalıştırmak için ateşkes. Web sunucuları komut dosyası için yürütme ortamı kurmak nasıl alınır yaklaşımlara bağlıdır. Bu tüm web sunucuyu tekrar her zaman kurmak etmese Örneğin, Apache 2 gerçekten, her web isteği için bir çocuk süreç spawn: yürütme ayarları ve parametreleri hakkında çocuklara komutları bir ana süreç var.

Web isteği sona erdiğinde bu nedenle, bir PHP komut dosyası biter; komut dosyası (bir ölümcül hata gibi bir exit deyimi veya benzeri) durdurmak veya komut kaynağının gerçek sonuna ulaştığında yapan bir bildiri ulaştığında olmasıdır.


EDIT yeni istekler için yeni bir süreç yumurtlama etkinliği hakkında.

Günümüzde, sunucular PHP kendisi için ayrı bir işlem spawn yok: onlar dili embed ve onunla çalışmak için PHP kitaplığı kullanın. Ancak, sunucular gerçekten de aldıkları her HTTP isteği için bir işlem spawn ücretsizdir. Apache onun mpm_prefork modülü ile yapar.

Yeni bir süreç yumurtlama gerçekten pahalı olsa da sadece bir işlem üretmekten çok, çok daha fazla olduğu, tenths of seconds sürebilir betiğin kendi maliyet ile karşılaştırıldığında, potansiyel bir şey değil.

Ayrıca, sunucular genellikle aynı anda birçok müşterilerine hizmet etmek için var; Bu nedenle, sadece her istek sırayla tedavi etmek düşünülemez. Onlar aynı anda çalıştırılması gerekir ve bu uygulamacılarıdır iki seçenek kalıyor: iplik veya süreçler. PHP parçacığı güvenli birçok platformda olmak, ayrı bir işlemde çalıştırmak için genellikle tercih değil.

Evet, bu, gerçekte ne olduğunu her talebidir. Bu PHP doğasıdır.