2012-01-21 11 views
5

मेरे पास एक छोटा चैट ऐप होता था (जो लगभग काम कर रहा था), जो PHP, jQuery और MySQL का उपयोग करता है। उपयोगकर्ताओं की मात्रा बहुत छोटी है (केवल मेरे दोस्त इसका उपयोग करते हैं)। मैंने इसके लिए लंबी मतदान विधि का उपयोग किया।एचटीएमएल 5 - साझा होस्टिंग में वेबसाकेट

और अब, मैं इसके लिए एचटीएमएल 5 वेबसाइटों का उपयोग करने के बारे में सोच रहा हूं, क्योंकि यह बहुत अधिक कुशल है। और मेरे अधिकांश मित्र Google क्रोम का उपयोग कर रहे हैं (जो पहले ही एचटीएमएल 5 का समर्थन करता है)। मैं कुछ ट्यूटोरियल के माध्यम से चला गया है जो एचटीएमएल 5 websockets के बारे में बात करते हैं। और मैंने github से phpWebSocket डाउनलोड किया है। मैं कोड के माध्यम से चला गया है। लेकिन रीडेमे फ़ाइल का कहना है कि PHP पृष्ठ जो इनकमिंग कनेक्शन को सुनता है उसे कमांडलाइन से "PHP -q" का उपयोग करके चलाया जाना चाहिए। इसलिए, मैंने खोज की है कि यह "क्यू" ध्वज क्या करेगा। और मैंने पाया कि यह पृष्ठ को शांत मोड में चलाता है। तो, जब मैं शांत मोड में इसे चलाता हूं तो क्या हुआ? यह अंतहीन दौड़ जाएगा? क्या यह चल रही प्रक्रिया सिस्टम संसाधनों को प्रभावित करेगी?

यह PHP पृष्ठ पूरे समय चलना चाहिए। फिर केवल कनेक्शन स्वीकार किए जा सकते हैं। यही है ना ?

मेरे पास होस्टगेटर के साथ एक साझा होस्टिंग पैकेज है। और वे क्रॉन नौकरियों को भी अनुमति देते हैं। और मेरा वर्तमान चैट ऐप (जो लंबे मतदान विधि का उपयोग करता है) डेटाबेस को सभी संदेशों को सम्मिलित करता है। जब उपयोगकर्ता चुनाव होता है, तो यह डेटाबेस से किसी भी नए संदेश की खोज करेगा और फिर उन्हें आउटपुट करेगा (यदि कोई हो)।

तो, मैं यहां थोड़ा फंस गया हूं। :(

उत्तर

5

इसे कमांड लाइन से चलाया जाना चाहिए क्योंकि आपको संदेह है कि यह अंतहीन रूप से चलाने का इरादा है। यह सर्वर पर सॉकेट से जुड़ता है और आने वाले कनेक्शन के लिए सुनता है। इसे ब्राउज़र से विश्वसनीय रूप से नहीं चलाया जा सकता है। ।

"-q" विकल्प यह उत्पादन के लिए नहीं इस तरह के X-Powered-By: PHP या Content-Type: text/html के रूप में किसी भी ब्राउज़र हेडर बताता

यह रूप में ज्यादा स्मृति कोई साथ स्टार्टअप पर आपका स्मृति पदचिह्न की खपत होगी पीएचपी अपनी चल रहा है के रूप में रूप में लंबे समय के रूप में की आवश्यकता है। ग्राहक कॉन्फ़िगरेशन के बीच अलग-अलग होंगे। अधिक कनेक्टेड क्लाइंट, अधिक सीपीयू, मेमोरी और सॉकेट डिस्क्रिप्टर जिनका आप उपयोग करेंगे। यह चयन का उपयोग करता है, इसलिए यह कुशल सॉकेट हैंडलिंग है।

इसके अलावा, चूंकि आप साझा होस्टिंग पर हैं, इसलिए आप शायद इसका उपयोग नहीं कर पाएंगे क्योंकि आपके उपयोगकर्ता के पास बंदरगाह से जुड़ने और कनेक्शन सुनने की क्षमता नहीं होगी।

जैसा कि आप डेमो में देख सकते हैं, वेबसॉकेट को कनेक्ट करने के लिए यूआरएल ws://localhost:12345/websocket/server.php है। जब तक आपके पास WebSockets का उपयोग करने में सक्षम वेबसर्वर नहीं है, तो आपको phpWebSocket की तरह कुछ चलाना होगा जो सर्वर के रूप में कार्य करता है और 80 के अलावा किसी पोर्ट पर सुनता है।

आशा है कि मदद करता है।

+0

एक स्पष्ट जानकारी :) प्रदान करने के लिए धन्यवाद –

+0

एक और सवाल: कैसे हम इस WebSockets के साथ सत्रों का उपयोग करते हैं? या क्या इस मामले में यह संभव नहीं है? मेरा मतलब है, मैं उपयोगकर्ता के बारे में विशेष डेटा स्टोर करना चाहता हूं। या कुछ सत्यापन हस्ताक्षर कहें। क्या इसके लिए सत्र का उपयोग करना संभव है? या ** उपयोगकर्ता ** कक्षा में अलग डेटामैम्बर बनाएं: https://github.com/esromneb/phpwebsocket/blob/master/websocket.class.php? –

+0

जहां तक ​​मुझे पता है, आप इस परिदृश्य में websockets के साथ सत्र का उपयोग करने में सक्षम नहीं होंगे।चूंकि ब्राउज़र सर्वर पर सॉकेट से कनेक्ट हो रहा है, इसलिए कोई कुकी या सत्र कार्यक्षमता नहीं है। वेबसाइकिल कनेक्ट होने के बाद आप शायद कुछ प्रकार के लॉगिन अनुक्रम भेज सकेंगे (शायद सत्र कुकी से सत्र आईडी) और फिर आप उपयोगकर्ता के बारे में कुछ जानकारी प्राप्त कर सकते हैं। जब तक websockets Apache/PHP में अधिक एकीकृत नहीं होते हैं, मुझे लगता है कि आपको अपने स्वयं के समाधान के साथ आना होगा। Http://stackoverflow.com/questions/5353362/share-session-id-from-cli-to-browser देखें – drew010

1

होस्टगेटर के लिए साझा होस्टिंग पैकेज क्लाइंट को इनकमिंग के लिए स्थानीय बंदरगाहों से जुड़ने की अनुमति नहीं देता है। यह समस्या का हिस्सा हो सकता है।

http://support.hostgator.com/articles/pre-sales-policies/socket-connections

-3

आप cronjob उपयोग कर सकते हैं कमांड लाइन शुरू करने के लिए हो सकता है,

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