Node.js vs PHP Soket Sunucu: Web Sohbet

0 Cevap php

Ben uzun tutulan HTTP isteklerini (Comet), ajax ve (kullanılan tarayıcıya bağlı olarak) WebSockets kullanarak bir HTTP webchat programlamak istiyorum. Userdatabase mysql bulunmaktadır. Sohbet de javascript ile yazılmış olabilir belki sohbet akışı kendisi (node.js) dışında PHP ile yazılmış:

I don't want to start a php process per user as there is no good way to send the chat messages between these php childs. So I thought about writing an own socket server in either PHP or node.js which should be able to handle more then 1000 connections (chat users). As a purely web developer (php) I'm not much familiar with sockets as I usually let web server care about connections. The chat messages won't be saved on disk nor in mysql but in RAM as an array or object for best speed.

Bildiğim kadarıyla bir tek php işlemi (soket sunucu), aynı anda birden fazla bağlantı işlemek için hiçbir yolu yoktur bildiğiniz gibi, ancak soket bağlantıları büyük bir miktar kabul etmek ve (okuma ve yazma bir döngü onları ardışık işleyebilir; gelen mesajı -> tüm soket bağlantıları yazma). Sorun en büyük olasılıkla ~ 1000 kullanıcıları ve mysql işlemleri daha sonra tüm kullanıcıları etkileyecek aşağı olan şeyi yavaş olabilir bir gecikme olacak olmasıdır.

Benim soru: node.js daha iyi bir performans ile bir soket sunucusu ele miyim? Node.js olay tabanlı ama ben bir olay sırası sadece varsa (ki? Multi-threading gerek olmaz) ya da aynı anda birden çok olay işleyebilir emin değilim. Bir olay sırası ile sadece php gibi olurdu: işlemi kullanıcı kullanıcı sonra.

Ben de sohbet odası (daha az) kullanıcılar başına bir php işlem spawn olabilir ama aynı zamanda binlerce kullanıcı idare yeteneğine sahip singlethreaded IRC sunucuları vardır afaik. (C + + veya ne olursa olsun yazılı) bu yüzden belki de php de mümkündür.

Sonra proje php-değil, sadece programlama dillerinin bir karışımı olurdu çünkü ben node.js üzerinde PHP tercih ederim. Düğüm eşzamanlı bağlantıları işleyebilir Ancak ben muhtemelen seçsin.

0 Cevap