2011-12-18 19 views
6

Düğümlerle, engellenmeyen bir TCP sunucusu oluşturmak çok kolaydır. nodejs.org Örnek: Çok hızlı ve böylece/epoll() şeyler sizin için, soket rutinleri ve C uygulanmaktadır ana döngü - -/anket()PHP'de yüksek performanslı bir eşzamansız soket sunucu uygulaması nasıl uygulanır?

var net = require('net'); 
var server = net.createServer(function (socket) { 
    socket.write("Echo server\r\n"); 
    socket.pipe(socket); 
}); 
server.listen(1337, "127.0.0.1") 

nodejs select() kolları verimli.

nodejs harika ama ben

Yani bir PHP adam :) çünkü ben, PHP yüksek performanslı TCP soket sunucusu uygulamak istiyorum, ben zaten denedim bir şey soket rutinlerini uygulamaktır PHP'de, socket_create_listen, socket_accept, socket_select vb. ve PHP'deki ana döngü. Bu çok iyi çalışıyor, ama çok verimli olduğunu düşünmüyorum, çünkü socket_select'u içimde select C-işlevini kullanmam gerekiyor ama epoll daha iyi olurdu (Linux kullanıyorum) ama epoll kullanılamıyor PHP işlevi olarak. (phpsocketdaemon ve phpmio, sizin için soket rutinlerini uygulayan 2 projedir).

Bu nodejs yolunu yapmak mümkün mü? C'deki döngü ve soket rutinlerini uygulayan bir PHP modülünü düşünüyorum ve olaylar için PHP geri arama işlevlerini çağırıyor (onread, onerror ..). Yoksa bu çabaya değmez mi?

+2

/PHP'deki yüksek performanslı TCP soket sunucusu, eğer birini gördüğümde bir oxymoron gibi görünüyor. –

+2

Bir PHP hayranı olduğum kadar, bu tür bir kullanım için tasarlanmamıştı. İçinde bir sunucu gerçekleştirebilirsiniz, ancak bunu etkili bir şekilde yapmanın gerçek bir başarı olacağını söyleyebilirim. PHP, bu tür kullanıma izin vermek için bazı büyük mimari değişikliklere uğramadığı sürece, işe daha uygun bir şey kullanmanızı tavsiye ederim. – GordonM

cevap

2

Bunun tipik bir örneği olduğunu düşünüyorum. "Eğer sahip olduğunuz her şey bir çekiç ise, her şey bir çivi gibidir."

Daha önce de belirttiğiniz gibi, php iş için doğru araç değildir. Muhtemelen bunu yapmak için bir yol bulabilirsiniz, ancak büyük olasılıkla dağınık olacaktır.

Bu nedenle iş için doğru aracı kullanın. Duvara vidayı sürmek için çekiç kullanmazdın, değil mi?

+1

Daha ziyade bir at gibi bir Humvee ile rodeo olmazdı. –

+2

PHP'nin bunun için en iyi araç olmadığına katılıyorum. Ancak, geliştiriciler genellikle, sunucu üzerinde hiçbir kodun bulunmadığı durumlarda, kodun üzerinde çalıştığı durumlar ile karşılaşırlar. Günümü günümde, kod yazdığımız ve onu kendi ortamlarına dağıtan müşterilere gönderdiğimiz bir ajans için çalışıyoruz ve bildiğimiz tek şey, kodumuzun standart bir PHP yığınında çalışması gerektiğidir. Ve bazen phpinfo'ya() erişemiyoruz. Bence nesnel kalmak ve önünüzdeki problem için bir çözüm bulmak önemlidir. – dnshio

İlgili konular