2011-12-18 9 views
6

नोडजेस के साथ, गैर-अवरुद्ध टीसीपी सर्वर बनाना बहुत आसान है। nodejs.org से उदाहरण:,/epoll() सामान आप के लिए, सॉकेट दिनचर्या और मुख्य पाश सी में लागू किया जाता है तो यह बहुत तेजी से है और - -/चुनाव()PHP में उच्च प्रदर्शन एसिंक्रोनस सॉकेट सर्वर एप्लिकेशन को कैसे कार्यान्वित करें?

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 का चयन करें() संभालती है कुशल।

NodeJS महान है, लेकिन मैं PHP में एक उच्च प्रदर्शन TCP सॉकेट सर्वर लागू करना चाहते हैं, क्योंकि मैं एक PHP पुरुष :)

तो कर रहा हूँ, एक बात मैं पहले से ही करने की कोशिश की सॉकेट दिनचर्या को लागू करने की है PHP में, socket_create_listen, socket_accept, socket_select आदि और PHP में मुख्य पाश के साथ। यह बहुत अच्छा काम करता है, लेकिन मुझे नहीं लगता कि यह बहुत ही कुशल है, क्योंकि मुझे socket_select का उपयोग करना है जो सी-फ़ंक्शन select आंतरिक रूप से कॉल करता है, लेकिन epoll बेहतर होगा (मुझे लिनक्स का उपयोग कर रहा है), लेकिन epoll उपलब्ध नहीं है PHP फ़ंक्शन के रूप में। (phpsocketdaemon और phpmio 2 परियोजनाएं हैं जिन्हें मैंने पाया है कि आपके लिए सॉकेट-रूटीन लागू करें)।

क्या यह नोडजेस तरीके से करना संभव होगा? मैं एक PHP मॉड्यूल के बारे में सोच रहा हूं जो सी में लूप और सॉकेट दिनचर्या लागू करता है, और घटनाओं के लिए PHP कॉलबैक फ़ंक्शंस को कॉल करता है (onread, onerror ..)। या यह प्रयास के लायक नहीं है?

+2

/PHP में उच्च प्रदर्शन टीसीपी सॉकेट सर्वर/यदि मैंने कभी देखा तो ऑक्सीमोरोन की तरह दिखता है। –

+2

जितना मैं एक PHP प्रशंसक हूं, यह वास्तव में इस तरह के उपयोग के लिए डिज़ाइन नहीं किया गया था। आप इसमें एक सर्वर को लागू करने में सक्षम हो सकते हैं, लेकिन मैं कहूंगा कि इसे एक कुशल तरीके से करना वास्तविक काम होगा। जब तक PHP इस तरह के उपयोग की अनुमति देने के लिए कुछ प्रमुख वास्तुशिल्प परिवर्तनों से गुजरता है, तो मैं कार्य के लिए बेहतर कुछ बेहतर उपयोग करने की सलाह देता हूं। – GordonM

उत्तर

2

मुझे लगता है कि यह एक सामान्य मामला है "यदि आपके पास सब कुछ है हथौड़ा है, तो सब कुछ नाखून जैसा दिखता है।"

जैसा कि आप स्वयं पहले ही पता लगा चुके हैं, PHP नौकरी के लिए सही उपकरण नहीं है। आप शायद इसे करने का कोई तरीका ढूंढ सकते हैं, लेकिन यह संभवतः गन्दा हो जाएगा।

तो नौकरी के लिए सही उपकरण का उपयोग करें। दीवार में एक पेंच चलाने के लिए आप एक हथौड़ा का उपयोग नहीं करेंगे, है ना?

+1

अधिक आप घोड़े की बजाय एक Humvee के साथ rodeo नहीं होगा। –

+2

मैं मानता हूं कि PHP इसके लिए सबसे अच्छा टूल नहीं है। लेकिन डेवलपर्स को अक्सर ऐसी परिस्थितियों का सामना करना पड़ता है जहां सर्वर पर उनका कोई नियंत्रण नहीं होता है कि कोड नोडज या अन्य विकल्प स्थापित करने पर चल रहा है, यह संभावना नहीं हो सकती है। मुझे अपने दिन-प्रतिदिन नौकरी में एक एजेंसी के लिए काम करने का अनुभव होता है जहां हम कोड लिखते हैं और इसे अपने ग्राहकों पर तैनात करने वाले ग्राहकों को भेजते हैं और हम जानते हैं कि हमारे कोड को मानक PHP स्टैक पर चलाना है। और कभी-कभी हमारे पास phpinfo() तक पहुंच भी नहीं है। मुझे लगता है कि उद्देश्य बनाए रखना और आपके सामने समस्या का समाधान ढूंढना महत्वपूर्ण है। – dnshio

संबंधित मुद्दे