2010-11-18 8 views
10

मैं सिर्फ JQuery को देखना शुरू कर रहा हूं; अब तक सब कुछ PHP रहा है।JQuery और PHP - क्या मैं सर्वर से धक्का दे सकता हूं?

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

+1

वर्तमान में कोई विश्वसनीय पुशिंग विधि नहीं है। लंबे मतदान पर एक नज़र डालें। – jwueller

+0

प्लस वन। धन्यवाद – Mawg

उत्तर

12

क्लाइंट को मतदान करना है, लेकिन आप long polling कर सकते हैं, यानी अनुरोध को जीवित रखें जब तक कि सर्वर को वापस धक्का देने के लिए कोई ईवेंट न हो (यानी पूर्ण अनुरोध)।

अन्यथा, आप वेब सॉकेट का उपयोग कर सकते हैं।

+0

मुझे इस बार मिला। Dammit! +1 :) –

+0

@ जैकोब रिलिकिन हाहा, अंत में! – alex

+0

+1 लेकिन .... किसी तरह की प्रतिद्वंद्विता, दोस्तों? :-) – Mawg

3

आप ग्राहक को धूमकेतु जैसे लंबे मतदान तंत्र का उपयोग कर सकते हैं, लेकिन वास्तव में "पुश" करने का कोई तरीका नहीं है।

+0

PHP में websockets के बारे में क्या? –

3

आप ऐसा करने के लिए "धूमकेतु" का उपयोग कर सकते हैं। हालांकि, PHP धूमकेतु करने के लिए एक भयानक भाषा है। PHP में धूमकेतु करने के लिए और अधिक लोकप्रिय तकनीकों में से एक (उस तरह के काम) लंबे मतदान है।

लंबे मतदान के साथ विचार सर्वर पर AJAX अनुरोध बनाना है। सर्वर कनेक्शन स्वीकार करता है लेकिन प्रतिक्रिया नहीं देता है (i.e .: एक while लूप sleep(1) इसमें) जब तक कोई ईवेंट नहीं होता है। यह सेकंड, मिनट, आदि हो सकता है

लंबे मतदान "काम" करने के लिए, हालांकि, आपको यह सुनिश्चित करना होगा कि कनेक्शन बहुत जल्दी समय समाप्त नहीं हो रहा है, इसलिए अपना निष्पादन समय उच्च निर्धारित करें (मिनट, या यदि संभव हो तो असीमित)। आपको क्लाइंट पर कोड लिखने की भी आवश्यकता होगी जो सर्वर के डिस्कनेक्शन/टाइमआउट को संभालती है। जब ऐसा होता है, तो एक नया अनुरोध शुरू किया जाना चाहिए।

आशा है कि इससे मदद मिलती है!

+0

+1 एक सूचनात्मक और विस्तृत उत्तर के लिए आपको बहुत बहुत धन्यवाद। "PHP धूमकेतु करने के लिए एक भयानक भाषा है" - आप क्या सलाह देते हैं? – Mawg

3

यह वास्तव में jquery से संबंधित कुछ भी नहीं है, लेकिन खुद ही एचटीपी से संबंधित है।

यह मूल रूप से एक सर्वर क्लाइंट के लिए कुछ भी पुश करने के लिए के लिए संभव नहीं है सक्रिय रूप से दो संभावित समाधान है:

  1. यह बंद किए बिना HTTP कनेक्शन रखें।

  2. मतदान

+0

प्लस वन। धन्यवाद – Mawg

5

HTTP प्रोटोकॉल अनुरोध-प्रतिक्रिया सिद्धांत है जो कि सर्वर केवल ग्राहक से एक अनुरोध के बाद एक प्रतिक्रिया उत्पन्न कर सकते हैं इसका मतलब है पर काम करता है। इसका मतलब है कि सर्वर क्लाइंट को पहले स्थान पर अनुरोध किए बिना प्रतिक्रिया भेज सकता है। यह एक PHP समस्या नहीं है, यह एक HTTP मुद्दा है। तो नहीं, आप धक्का नहीं दे सकते, ग्राहक को अनुरोध करना है, या मतदान। एलेक्स ने सुझाव दिया, आप लंबे मतदान पर एक नज़र डाल सकते हैं।

+0

+1 अच्छा बिंदु; नीचे यह सभी HTTP है, कोई फर्क नहीं पड़ता कि कौन सी प्रोग्रामिंग भाषा – Mawg

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