Ajax yoklama ile PHP gerçek zamanlı sohbet

2 Cevap php

Ben facebook sohbet benzer bir sohbet oluşturmak gerekir.

Ben (siparişinin her 2-3 saniye göndermek için) ajax yoklama kullanmayı düşünüyorum.

Bu iyi bir yaklaşım mı? Yoksa Erlang ve sunucu-kuyruklu yıldız gibi diğer sunucu tarafı dilleri kullanmak gerekir?

2 Cevap

Ya da diğer sunucu tarafı dilleri kullanmak gerekir

Hayır - büyük sorun HTTP push bildirimleri desteklemiyor olduğunu - - bu gerçekten alakalı değil yani web sunucusu kullanmak dil oldukça fazla ilgisi yoktur.

Sunucu-kuyrukluyıldız?

Bir dil - - özellikle HTTP itme yokluğunu gidermek için tasarlanmış Comet programlama tekniğidir. Geleneksel olarak, bir tarayıcı, bir istek gönderir webserver istemciye geri gönderir ardından bir cevap oluşturur. Comet ile, web sunucusu ya kadar bekler:

1) yanıt dahil bazı güncelleme olduğu

2) bir zamanlayıcı sona eriyor

Yanıt göndermeden önce. Bunun bir sonucu olarak yüksek bir sayıda sonuçları olduğunu webserver inaktif bağlantıları - eğer performans sorunlarına neden olabilir.

Alternatif bir yaklaşım sohbet sunucusuna bağlanır farklı bir protokol kullanarak tarayıcıda çalıştırmak için bir istemci programı delver HTTP kullanmaktır. Olası ActiveX, Java veya flash ile bunu yapmak için - en azından taşınabilirlik - büyük sakıncaları var tüm bunların.

Ipucu - - docs Naggle söz yoksa o zaman muhtemelen ölçeklenebilirlik / performansı hakkında düşünce değil ettik PHP ve javascript kullanarak orada birkaç önceden yazılı çözümleri vardır.

C.

Bu sanırım kaç kullanıcıları bağlıdır. Eğer birçok kullanıcıya sahip değilsiniz zaman (Yani geçmişte yaptım nasıl) çalışacaktır. Çok x saniye (yoklama aralığı) gecikmeleri kadar olabilir çünkü Ama bence sohbet gerçek zamanlı değildir.

Eşzamanlı kullanıcı bir sürü yoklama modeli ölçekli olmayacaktır. Sonra gerçekten engellenmeyen uzun yoklama (en az) içine bakmak gerekir. Bence büyük siteler gerçek zamanlı uygulama nasıl, çünkü tüm olası at engellenmeyen uzun yoklama tekniği içine bakmak gerekir eğer. PHP Bu tekniğin doğru değil çünkü Ama sunucu diğer programlama dilleri yüklemek için izin vermelidir.