2012-07-09 11 views
11

मैंने इंटरनेट के चारों ओर विभिन्न स्थानों में इसका उल्लेख किया है कि एचटीएमएल 5 websockets PHP के साथ अच्छी तरह से काम नहीं करते हैं, कि इसकी प्रकृति द्वारा PHP उनके साथ उपयोग के लिए उपयुक्त है। दूसरी तरफ, मैं websockets के साथ PHP का उपयोग करने पर कई ट्यूटोरियल देखता हूं और मैंने कुछ PHP वेबसाइकिल कार्यान्वयन जैसे http://code.google.com/p/phpwebsocket/PHP के साथ उपयोग के लिए उपयुक्त websockets हैं?

तो क्या किसी के पास PHP के साथ websockets का उपयोग करने पर कोई निश्चित जानकारी है। क्या वे PHP के साथ प्रयोग योग्य हैं, जावा या पायथन के विपरीत PHP के साथ उनका उपयोग करने के फायदे/नुकसान क्या हैं, और मैंने कई लोगों को क्यों पढ़ा है कि वे एक साथ अच्छी तरह से काम नहीं करते हैं?

+2

आपको नोडजेएस और सॉकेट.ओओ के बारे में पढ़ने में रुचि हो सकती है। यह आपके प्रोजेक्ट पर निर्भर करता है लेकिन यह आपको जो चाहिए वह आपको दे सकता है: [nodejs.org] (http://nodejs.org) [socket.io] (http://socket.io) – imperium2335

उत्तर

7

समस्या यह है कि वेबसाकेट लंबे समय तक चलने वाले थ्रेड/प्रक्रियाओं के लिए डिज़ाइन किए गए हैं, जिनमें से प्रत्येक एकाधिक ईवेंट-संचालित कनेक्शन बनाए रखता है, जबकि PHP (और यह अपाचे कोहोर्ट) को अल्पकालिक एकल प्रक्रिया प्रक्रियात्मक प्रतिमान (उदाहरण के लिए max_execution_time is commonly set to 30 seconds) के आसपास डिज़ाइन किया गया था, और सत्र एकल धागा है)।

यह कहना नहीं है कि PHP में वेबस्केट सर्वर कार्यान्वयन लिखना असंभव है। मुझे पता है कि कम से कम एक प्रोजेक्ट मौजूद है जिसमें done exactly this है (लेकिन ध्यान दें, यहां तक ​​कि यह उदाहरण कमांड लाइन से चलाया जाता है, न कि mod_php के माध्यम से)। लेकिन ऐसा लगता है कि वेबसाकेट्स का PHP कार्यान्वयन सस्ते/साझा होस्टिंग के सेटअप के साथ असंगत है जहां PHP का सबसे अधिक उपयोग किया जाता है।

तो PHP में यह संभव है, फिर भी आप एक अलग सर्वर प्रक्रिया (अपाचे से) चलाने के लिए समाप्त हो जाते हैं, और यदि आप होस्टिंग की तरह हैं जो अलग सर्वर प्रक्रियाओं को अनुमति देता है तो वेबस्केट्स लिखना आसान है घटना में संचालित प्रोग्रामिंग के लिए डिज़ाइन किया गया कुछ ऐसा कोड।

यदि आप हजारों समवर्ती डुप्लेक्स कनेक्शनों की सेवा करने की योजना नहीं बना रहे हैं तो संभव है कि आप अपने PHP बैक-एंड के साथ AJAX और SSE के संयोजन का उपयोग करके बेहतर हो जाएंगे।

+0

php-fpm के बारे में क्या? और जेआईटी प्रौद्योगिकी के साथ php7? यह उत्तर अपडेट किया जाना चाहिए। – LeonanCarvalho

0

मैंने हाल ही में phpwebsocket की कोशिश की और यह इस समय (php 5.4 और क्रोम) पर काम नहीं करता है, कोड हैंडशेक में एक दूसरीकी को संदर्भित करता है जो rev में मौजूद नहीं है। वेबसाइकिल प्रोटोकॉल के 13 में मेरे पास आरएफसी पढ़ने का समय नहीं है यह समझने के लिए कि क्या मामला है।

यह सुनिश्चित है कि यह समाधान लंबे मतदान के साथ AJAX की तुलना में अधिक सुरुचिपूर्ण और प्रतिक्रियाशील है लेकिन इस समय वेबसाइकिल स्थिर नहीं हैं, मुझे लगता है कि यह प्रतीक्षा करना अधिक दिलचस्प होगा कि w3c इसे स्थिर घोषित करता है।

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