PHP ile tarayıcı arasındaki iletişimi

6 Cevap php

Ben bir okul projesi için basit bir ajax chat istemcisi inşa ediyorum ve bunu uygulamak için bir yol düşündüm, ancak IMO very hantal bir yaklaşım gibi görünüyor:

1) User A sends message which is accepted by a server-side PHP script and saved to database 2) The browser of User B periodically launches a server side PHP script to check if there are any messages in the database for User B. PHP script finds messages from User A and returns them.

Bu doğru bir yaklaşım mı? Bu iki kullanıcı arasında iletişimi bir veritabanı olmadan elde edilebilir?

(Bu benim ilk web uygulaması ... Ben tarayıcılar + HTTP olmadan bu yapıyordu, ben sadece TCP yuva dinledi kalıcı sınıfı ile bir Java programı yapmak ve uygun adresine mesaj iletilir olurdu)

6 Cevap

Evet çözüm başlangıç ​​için yeterince iyi. Belirli bir kullanıcı için herhangi bir sohbet iletileri varsa ne yapıyorsun sunucu yoklama. Yeterince iyi.

Ister bir sonraki seviyeye, (muhtemelen zor olabilir) Goto Ama eğer müşteri tarayıcılar üzerine yeni mesajları zorlayabilir bir sunucu olabilir. Bu, "Comet" olarak adlandırılır. (Senin userbase binlerce aşan olacak ise) Ama kapsamlı sunucu kaynaklar gerekir.

Ilk yöntemi deneyin ve bu gelecek için gidin.

Her PHP "örneği" sadece istek süresince sürer, bu nedenle bu tür sohbet mesajları için bir veritabanı olarak kalıcı bir mağaza gerekir.

Ve evet, ben geçmişte çok benzer bir sistemi hayata ettik, çünkü bu işe gelmediğini biliyoruz.

The Comet Approach

Eğer bir çalışma yöntemi istiyorsanız Teehoo, ne tavsiye ettiler, iyi olurdu, özellikle onun sadece bir okul projesi için eğer.

Facebook öyle bir yol gibi bir şey istiyorsanız, commet HTTP bağlantılarına bakmak gerekir. Onun çok zeki. Ben ilk ustaca olduğunu düşündüm okumak hakkında o zaman ben hatırlıyorum. Bu hızlı güncellemeleri sağlar ve sürekli açık web sunucusuna bağlantı tutmak çünkü hemen hemen yeni iletiler için sürekli sorgulayarak AJAX bağımlılığını ortadan kaldırır.

Onlar kuyrukluyıldızı hayata rağmen .., kuyruklu http bağlantıları bir okuma almak (ama kuyruklu yıldız sohbet uygulaması bakmıyorum, onlar facebook sohbet uygulamasına benzer bir ürünü satmaya çalışan bir şirket ve ne istediğiniz değil yöntemi).

Comet Chat #

http://en.wikipedia.org/wiki/Comet_(programming))

Sonra bunu okuyun:

http://www.zeitoun.net/articles/comet_and_php/start

Ama yine de, ne önerdi bir okul projesi için gayet iyi.

Bu doğru bir yaklaşım mı? Bu iki kullanıcı arasında iletişimi bir veritabanı olmadan elde edilebilir?

En az çeşit bir depolama ihtiyacı - verilerin sebat özellikleri size kalmış. Bir veritabanı, uzun bir zaman miktarı için kalıcı veri için iyi bir yoldur.

Ayrıca paylaşılan bellek depolama örneğin geçiyor düşünebiliriz memcache.

Ne de yapabilirim bir kuyruklu yıldız gibi javascript yaklaşımı kullanmaktır. PHP sayfası bir mesaj alır kadar tarayıcı açık bir PHP sayfası bir bağlantı tutmak.

Bazı depolama ihtiyacı böylece Ancak yine bağlantı başına PHP sayfa hizmet sınırlıdır. Eğer gerçekten hızlı olmasını istiyorsanız bellek kullanabilirsiniz.

PHP bellek kullanın: http://www.php.net/manual/en/function.apc-add.php

Sohbet Comet yaklaşım: http://www.zeitoun.net/articles/comet_and_php/start#comet_with_classic_ajax_litte_chat_demo

evet iyi cevaptır. Eğer bir veritabanı olmadan yapabilirsiniz.

Ama .. sen merkezi bir sunucuda verilerin bazı yol saklamak zorunda olacak. Eğer büyük bir site varsa bir sohbet uygulaması için rasyonel bir veritabanı, bu sohbet türü bir uygulama için idealdir ama onun sadece gerçekten önemli değildir. Eğer bir proje için bu yapıyorsun bir veritabanı sohbet bilgi depolamak için bol yeterince iyi olurdu. Sadece javascript / ajax kullanarak yeni iletiler için veritabanı yoklamak gerekir.

Eğer bir veritabanı kullanmıyorsanız istiyorsanız ben olmayan bir sql yaklaşımını kullanarak öneririm. Birçok seçenek var gibi Google bu konuda senin arkadaşın.