EDIT: Update - scroll down
EDIT 2: Update - problem solved
Some background information:
Java kendi web sunucusu yazıyorum ve bir kaç gün önce ben PHP ile Apache arayüzleri, bu yüzden PHP desteği uygulamak nasıl tam olarak SO sordu. (Mod_php bir seçenek değildir çünkü) FastCGI iyi yaklaşım olduğunu öğrendim. Yani FastCGI protokolü özellikleri baktım ve benim sunucu için bir çalışma FastCGI sarıcı yazmayı başardı. Ben phpinfo test ettik () ve çalışır, aslında tüm PHP fonksiyonları gayet iyi (gönderme veri, oturumlar, tarih / saat, vs vs) çalışmak gibi görünüyor.
Benim Webserver tamamlamış veya müşteri ile kullanıcı bağlantı zaman sonlandırma her kullanıcı isteği için yeni bir Java konu (yumurtlama yapar, (yani user1 some_large_binary_file.zip talep birey2 olarak aynı anda file1.html alabilirsiniz) eşzamanlı istekleri hizmet edebilir ) iptal edilir.
Ancak, aynı anda 2 (veya daha fazla) FastCGI istekleri ile baş edemez. Ne yapar bu onları kuyruklar olduğunu, bu nedenle talebi 1 hemen sonra tamamlandığında bu istek 2 işlemeye başlar. I 2 PHP sayfaları ile bu test, bir uyku (10) ve diğer phpinfo () içerir.
Ben bu yapılabilir (IIS altında PHP FastCGI olarak çalışır ve sadece iyi çoklu istekleri ile başa çıkabilirim) bildiğiniz gibi Nasıl birden istekleri ile uğraşan hakkında gitmek istiyorum.
Some more info:
Ben windows altında kodlama yaşıyorum ve php-cgi.exe yürütmek için kullanılan benim toplu dosyası içerir:
set PHP_FCGI_CHILDREN=8
set PHP_FCGI_MAX_REQUESTS=500
php-cgi.exe -b 9000
Ama 8 çocuk yumurtlamaya değil, hizmet sadece 500 istekleri sonra sona erer.
Ben araştırma yaptım ve gelen Wikipedia adres:
Processing of multiple requests simultaneously is achieved either by using a single connection with internal multiplexing (ie. multiple requests over a single connection) and/or by using multiple connections
Şimdi açıkça çoklu bağlantıları her şey gibi bir istemci FastCGI uygulamasına yeni bir yuva oluşturur, fakat (bunun yerine onları sıraya dizer) aynı anda çalışmıyor FastCGI içerir bir şey istediğinde, benim için çalışmıyor.
I know that internal multiplexing of FastCGI requests under the same connection is accomplished by issuing each unique FastCGI request with a different request ID. (also see the last 3 paragraphs of 'The Communication Protocol' heading in this article).
Ben bu test değil, ama nasıl bu uygulama hakkında gitmek istiyorsunuz? Ben bazı tür bir Harita ve istekleri eklemek için kullanabileceğiniz bir statik işlev içeren FastCGI Java iplik çeşit ihtiyaç götürün. Sonra Konudaki en run () fonksiyonu, bir süre döngü olurdu ve onlara bir istek kimliği atar ve FastCGI akışına bunları yazmak istiyorum eğer öyleyse her döngüsü için, Harita yeni istekleri içerip içermediğini kontrol olur. Ve sonra bu çok karmaşık hale görebileceğiniz gibi, giriş vs vs için bekleyin.
Herkes bunu doğru bir yol biliyor mu? Ya da hiç bir düşünce? Çok teşekkürler.
Note, if required I can supply the code for my FastCGI wrapper.
Update:
Temelde, ben nginx indirilen ve bir FastCGI uygulaması olarak PHP kullanmak üzere kurmak ve benim de sunucu olarak aynı sorunu yaşadı. Eşzamanlı PHP istekleri beceremedi. Bu benim kod aslında doğru olduğuna inanmak bana yol açar. Yani bir şey PHP ile yanlış ya da ben doğru kurma değilim. Bazı lighttpd'nin kullanıcıların Windows (bu çok mantıklı değil) düzgün FastCGI işleyemez iddia çünkü Windows kullanıyorum çünkü Belki de öyledir. Ben bazen yakında Linux kurmak ve o herhangi bir ilerleme rapor edeceğiz.