जब HTTP अनुरोध समय से पहले समाप्त हो जाता है तो क्या होता है?


13

मान लीजिए, मैं अपने ब्राउज़र में एक URL दर्ज करता हूं और ब्राउज़र HTTP अनुरोध सबमिट करता है। दूरस्थ HTTP सर्वर अनुरोध को स्वीकार करता है और अनुरोध को पूरा करने के लिए एक लंबा कार्य आरंभ करता है।

यदि मैं अनुरोध पूरा होने से पहले समाप्त कर देता हूं (उदाहरण के लिए, Esc या फ़ायरफ़ॉक्स में दबाएं), तो अनुरोध कैसे बंद किया जाता है? क्या ब्राउज़र सर्वर पर इस एबॉर्ट रिक्वेस्ट को कम्यूनिकेट करेगा (मुझे लगता है कि यह नहीं है)?

माना जाता है कि लंबे कार्य के पूरा होने पर, परिणाम के साथ सर्वर क्या करेगा? यह वैसे भी वापस भेज देता है? अगर ऐसा होता है, तो क्या होगा? क्या यह मेरे पीसी तक पहुंचता है? या रास्ते में खो जाता है?

यह सिर्फ मेरी जिज्ञासा के लिए है।

आपके समय के लिए धन्यवाद :)


2
क्या आपने एक वायरशार्क कैप्चर चलाने की कोशिश की है? यह देखना आसान बनाता है कि एक कंप्यूटर दूसरे नेटवर्क पर क्या भेजता है।
रैसलिस्ट

जवाबों:


8

खैर, यह सब इस बात पर निर्भर करता है कि सर्वर क्या कर रहा है। आमतौर पर, यह तब तक समाप्त अनुरोध का "पता नहीं" लगाएगा जब तक कि एक भेजने का प्रयास नहीं किया जाता है। उस समय, स्क्रिप्ट को वेब सर्वर से एक user_abort संदेश मिलेगा (php में, आप इसे बता सकते हैं कि उपयोगकर्ता aborts की उपेक्षा करें ignore_user_abort(true);)। क्लाइंट को डेटा भेजने का प्रयास किए बिना, सर्वर के लिए यह जानने का कोई तरीका नहीं है कि अनुरोध रद्द कर दिया गया था।

जब यह बंद टीसीपी कनेक्शन के लिए अनुरोध भेजने की कोशिश करता है, तो क्या होता है यह पूरी तरह से सर्वर सॉफ्टवेयर पर निर्भर करता है। अपाचे इस तरह काम करता है: यदि भेजा गया डेटा अभी भी है जबकि एक डायनेमिक स्क्रिप्ट प्रोसेस कर रहा है, तो यह स्क्रिप्ट को एबॉर्ट के बारे में बताएगा और इसे हैंडल करना होगा कि यह कैसे चाहता है (PHP --by default-- termates)। यदि स्क्रिप्ट किया जाता है, या यह एक स्थिर फ़ाइल अनुरोध है, तो यह बंद कनेक्शन को अनदेखा करेगा और वापस आ जाएगा।


-2

मुझे लगता है कि बिजली के प्रकार के बारे में सोचा जाना है। चार्ज। जब कुछ कनेक्शन समाप्त हो जाता है, तो भेजा जा रहा डेटा एक चार्ज है, यह सिर्फ उस विशेष हस्तांतरण के लिए उपलब्ध कोई सुनने वाले सॉकेट से गायब हो जाता है। सॉकेट होने पर ही कुछ संचार होता है।

उदाहरण:

हम http://localhostApache2 httpd के लिए हिट करते हैं। मान लीजिए कि यह नहीं चल रहा है। ब्राउज़र एक सॉकेट खोलता है, एक संदेश को पोर्ट 80 (डिफ़ॉल्ट) पर भेजता है और लगता है कि कोई प्रतिक्रिया है या नहीं। चूंकि कोई श्रोता नहीं है जैसा कि अपाचे नहीं चल रहा है, इस पिंग अनुरोध को बिल्कुल भी प्रतिक्रिया नहीं मिलती है। कम से कम 200 ओके या किसी भी तरह के हाथ हिलाना बिल्कुल भी नहीं। फिर हमारे पिंग का क्या होता है? http कुछ चीज़ भेजता है: जैसे GET http://localhost 80... आदि इस लाइन का क्या होता है? GET http://localhost 80? यह सिर्फ एक आरोप है और गायब हो जाता है।

यह सिर्फ मेरा विश्वास है, और हमें अधिक स्पष्टता के लिए पहले टीसीपी का उल्लेख करना चाहिए । तभी, हम समझ सकते हैं कि इंटरनेट प्रोटोकॉल और उसके बाद का http कैसे व्यवहार करता है। अंततः, समयपूर्व समाप्त http अनुरोध के लिए कोई ठोस परिभाषा नहीं है। इसीलिए इसे समयपूर्व समाप्ति कहा जाता है।


1
जबकि काव्यात्मक, शायद, यह अक्षम्य है, और इस के प्रभाव पर विचार करने के लिए विशेष रूप से उपयोगी तरीका नहीं है।
फाल्कन मोमेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.