COMET ve PHP için çözüm

8 Cevap php

COMET VE PHP kombinasyonu için gerçek bir çözüm var mı? Temelde, ben veritabanında yeni veri olduğunda periyodik bir kullanıcı ana sayfasını güncellemek için gereken bir noktaya geldim. Olarak anladığım kadarıyla, ben en kısa sürede yeni bilgi olarak kendi ana sayfanın içeriğini güncelleştirmek için benim sunucu ve benim müşteri tarayıcılar arasında sürekli bir bağlantı açmak gerekir. kaynakların çok ithaf ama ben bu konuda net bir şey bulmakta hiç şans vardı olmadan kullanılabilir. Ben PHP COMET uygulamak için iyi bir dil olmadığını göstermektedir birçok yazı okudum. Benim web uygulaması tamamen PHP ile programlanır ve ben başka bir dil öğrenmek istemiyorum ama zorla ediyorsam, başlamak için iyi bir dil önerir misiniz? Eğer ben sadece bu konuyu işlemek için bir arayüz programı olduğunu düşünüyor musunuz?

Şimdiden teşekkürler.

8 Cevap

Duydum kez insanlar PHP (like you said yourself), çünkü yol webserverlarda ve PHP oldu COMET için uygun olmadığını söylemek - çoğunlukla, isterseniz 200 demektir sayfa başına bir süreçtir, çünkü orada sunucuya bağlı kullanıcılar, 200 süreçleri gerekir (which can quickly become a problem for a couple of hundred more users).

Belki de bu soruna bir çözüm nginx_http_push_module kullanmak olacaktır?

I (yet ?) bunu denedim değil, ama biz sadece neye ihtiyacınız olabilir ...

Ben bir okul projesi üzerinde çalışan ve aynı sorunları koştu. Her PHP süreç çok bellek yükü olduğundan, kutu başına birçok bağlantıları desteklemek için imkansız. Ben BOSH ve XMPP kullanarak geçmek için karar bu noktada oldu. Bu teknoloji oldukça yeni "dalga" ama yolda size yardımcı olmak için epeyce kütüphaneler zaten var. I Strophe ve XMPPHP kullanarak öneririm. Sonra istemcileri (I Openfire kullanıyorum) bir Bosh sunucuya bağlanabilir ve bu sunucu başına etkin bağlantıların binlerce ölçeklendirilebilir.

Eğer böyle bir özelliği uygulamak için yeni bir dil öğrenmek zorunda değilsiniz.

Örneğin, Quercus (PHP Java uygulaması) kullanın ve JVMs bellek yönetim modeli kullanarak bir sunucu Comet uygulaması uygulamak.

İhtiyacınız çözümü vardır:

  1. almost COMET solution (uses php and one file written with perl): http://translate.google.com/translate?js=y&prev=%5Ft&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http%3A//dklab.ru/lib/dklab%5Fmultiplexor/&sl=ru&tl=en

  2. exact COMET solution in php (this is what you want, I think): http://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=http%3A//dklab.ru/lib/dklab%5Frealplexor/

Sen Javascript ve PHP API'ler sağlar bir kuyruklu yıldız sunucusu Dmitry Koterov en Realplexor, denemelisiniz.

Github indirin:

http://http://github.com/DmitryKoterov/dklab_realplexor/

İngilizce Readme.txt paketinde sağlanır.

Önce böyle bir kuyruklu yıldız bir uygulama ne olduğunu anlamak gerekir. Bir kuyruklu yıldız uygulama bina dahil konsepti Comet (programming) de wiki de açıklanmıştır

Ne anlamak gerekir wiki açıkladı kavramları aşağıdaki gibi sürece bir kuyruklu yıldız uygulaması oluşturmak için herhangi bir programlama dili kullanabilirsiniz olmasıdır

Uzun yoklama ile 1.Ajax

2.Streaming

Sen Simple “Long Polling” example code bazı örnek kod kontrol edebilirsiniz

Şimdi sorunlara gelen -

1.Eğer kullanımı ajax uzun yoklama sonra tarayıcı (ajax istek) çağırmayı veri sunucu tutmak olacaktır. Bu sunucuda bellek yiyiyor ya da bir süre sonra tarayıcıyı yavaşlatabilir.

Birkaç Öneri

JQuery PeriodicalUpdater (AJAX long polling/server polling)

Handling Long Polling

RobertFischer / JQuery-PeriodicalUpdater

Bunu uygulamak için kontrol etmeniz gerekenler -

a) veri sunucu üzerinde güncelleştirilmesi ne sıklıkla bekliyoruz.

b) sunucu tarafı komut dosyası istemci tarafında göndermeden önce kontrol almak ve işlem verileri için ne kadar zaman çalışır.

2.You aşağıdaki kullanarak akışı uygulayabilirsiniz -

How to implement COMET with PHP

Lightstreamer Dojo

Dojo Charting + Lightstreamer Comet Demo

Demo

Ajax Push Engine or The APE Project

Bu kontrol etmek için gerekenler -

a) hosting sağlayıcısı sunucuları barındıran bu yüklemeye izin verecek

b) Sizin RAM ve bant genişliği kullanımı (Size RAM ve Bandwidth birçok verir paketi ile özel bir sunucuya ihtiyaç) olacaktır

Bu gereksinimleri nelerdir ve nasıl bağlıdır. Analiz ve yaklaşım olacaktır.

Ne uyguladıklarını küçük bir uygulama ise size analiz ve bu yaklaşımın negatifleri ele gerçeği verilen Ajax Uzun yoklama için gidebilirsiniz.

Eğer büyük bir uygulama varsa buharda için gidebilirsiniz.

Uzun yoklama ile ajax jquery ve bunu yardımcı olmak için herhangi diğer büyük js çerçevesinde eklentileri vardır, kolay bir çözümdür.

Node.js bu gibi şeyler için bir tatlı çözüm gibi görünüyor. (Hala bir üretim için gamey az ama hepsi aynı serin). PHP bu gibi şeyler için, size artık hemen yanıt çünkü sunucu istekleri ile etkileşim biçimini değiştirmek zorunda korkunç bir ortamdır. Onlar be the server edelim, çünkü Python bunun için büyük Twisted gibi sunucuların bir avuç vardır. Olursa olsun bunu yazmak ne dili tipik istek / yanıt modelini değiştirmek lazım. (GlassFish en Grizzly Comet sunucu örnek olarak Java için yapar)