यह सामान्य अवधारणा के लिए है, न कि Android विशिष्ट के लिए
आमतौर पर, प्रत्येक उपयोगकर्ता पृष्ठ के लिए एक HTTP अनुरोध भेजता है। सर्वर अनुरोध प्राप्त करता है और उन्हें विभिन्न श्रमिकों (प्रक्रियाओं या धागे) को सौंपता है।
दिए गए URL के आधार पर, सर्वर एक फ़ाइल को पढ़ता है और उसे वापस उपयोगकर्ता को भेजता है। यदि फ़ाइल एक गतिशील फ़ाइल है जैसे कि PHP फ़ाइल, तो फ़ाइल को उपयोगकर्ता को वापस भेजने से पहले निष्पादित किया जाता है।
एक बार अनुरोधित फ़ाइल वापस भेज दिए जाने के बाद, सर्वर आमतौर पर कुछ सेकंड के बाद कनेक्शन बंद कर देता है।
देखें वेब सर्वर कैसे काम करते हैं
संपादित करें:
HTTP के लिए TCP का उपयोग करता है जो एक कनेक्शन-आधारित प्रोटोकॉल है। अर्थात्, क्लाइंट सर्वर से संचार करते समय एक TCP कनेक्शन स्थापित करते हैं।
एक ही समय में एक ही गंतव्य मशीन पर एक ही गंतव्य पोर्ट से कई ग्राहकों को कनेक्ट करने की अनुमति है। सर्वर बस एक साथ कई कनेक्शन खोलता है।
Apache (और अधिकांश अन्य HTTP सर्वर) में एक बहु-प्रसंस्करण मॉड्यूल (MPM) होता है। यह कनेक्शन को संभालने के लिए अपाचे थ्रेड/प्रक्रियाओं को आवंटित करने के लिए ज़िम्मेदार है। इन प्रक्रियाओं या थ्रेड्स को एक दूसरे को अवरुद्ध किए बिना, अपने स्वयं के कनेक्शन पर समानांतर में चलाया जा सकता है। अपाचे का एमपीएम बिना किसी कनेक्शन के खुले होने पर भी "अतिरिक्त" धागे या प्रक्रियाओं को खुला रखता है, जो बाद के अनुरोधों को गति देने में मदद करता है।
नोट:
मल्टी-थ्रेडिंग के साथ सबसे आम समस्याओं में से एक है "दौड़ की स्थिति"-- जहां आप दो अनुरोध एक ही काम कर रहे हैं ("रेसिंग" एक ही काम करने के लिए), यदि यह एक ही संसाधन है, तो उनमें से एक जीतने वाला है। यदि वे दोनों डेटाबेस में एक रिकॉर्ड डालते हैं, तो वे दोनों एक ही आईडी प्राप्त नहीं कर सकते-- उनमें से एक जीत जाएगा। इसलिए आपको कोड लिखते समय सावधान रहने की आवश्यकता है ताकि यह महसूस किया जा सके कि अन्य अनुरोध एक ही समय में चल रहे हैं और आपके डेटाबेस को संशोधित कर सकते हैं, फाइलें लिख सकते हैं या ग्लोबल्स बदल सकते हैं।