पोर्ट 80 पर सुनने वाला सर्वर कई प्रक्रियाओं को संभालने के लिए नहीं है। बड़े वर्षों के सरल टीसीपी डीमन एक समय में केवल एक कनेक्शन ही संभाल सकते थे। आप netcat
एक विशिष्ट पोर्ट पर सुनने जैसे कार्यक्रम का आयोजन करके इस व्यवहार का अनुकरण कर सकते हैं और इसके लिए दो मशीनों को जोड़ने का प्रयास कर सकते हैं। एक में मिलेगा, दूसरा बिना कनेक्शन के उछल जाएगा। ये डेमन ज्यादातर बेकार हैं इसलिए आप उन्हें कभी नहीं देखते हैं।
वेब-सर्वर की तरह कुछ के लिए, यह सीधे पोर्ट पर सुन रहा है। ध्यान रखने वाली बात यह है कि यह ऑपरेटिंग-सिस्टम के सॉकेट लाइब्रेरी में सबसे ऊपर बैठा है। जब एक नया कनेक्शन स्थापित होता है, तो सॉकेट लाइब्रेरी वेब-सर्वर सॉफ्टवेयर के लिए नया सॉकेट पास करता है। उस बिंदु पर, वेब-सर्वर सॉफ़्टवेयर में कुछ विकल्प होते हैं।
एक संभावना यह है कि यह सॉकेट-ऑब्जेक्ट को एक ही प्रक्रिया में एक नए थ्रेड को पास करता है। जब भी इस सॉकेट पर संचार होता है, तो यह थ्रेड इसे संभाल लेगा। मूल प्रक्रिया मध्यस्थता करती है कि कौन से धागे किसी भी समय सक्रिय हैं, जो बहुत कुछ हो सकता है।
एक और संभावना यह है कि यह एक नई प्रक्रिया का निर्माण करता है और प्रक्रिया के लिए सॉकेट-ऑब्जेक्ट को पास करता है। जैसा कि मैंने इसे समझा, यह अब इन बाल-प्रक्रियाओं और उनके लक्ष्यों के बीच ऑपरेटिंग सिस्टम के सॉकेट सिस्टम की मध्यस्थता संचार तक है। मूल प्रक्रिया अभी भी प्रक्रियाओं पर कुछ नियंत्रण रखती है, जैसे कि भूखों को मारना और अन्य अंतर-प्रक्रिया संचार।
इनमें से कौन सा दृष्टिकोण अधिक कुशल है, ऑपरेटिंग सिस्टम पर निर्भर करता है। IIRC, Apache दोनों ही मोड में चल सकते हैं।
संक्षेप में, सॉकेट लाइब्रेरी वेब-सर्वर के समानांतर प्रसंस्करण का स्तर प्रदान करता है। यह नए कनेक्शनों को स्वीकार करते हुए सक्रिय रूप से डेटा स्थानांतरित करने के लिए एक साथ कई कनेक्शनों को संभाल सकता है।
एक ब्राउज़र के लिए जो लोड समय को बेहतर बनाने के लिए एक वेबसर्वर के लिए कई कनेक्शन प्रयासों को स्पिन कर सकता है, साथ ही ब्राउज़र अंत पर समानता भी लागू होती है, यह एक अच्छी और अद्भुत बात है। ब्राउज़र पेज की स्थिति को ट्रैक कर रहा है क्योंकि यह लोड हो रहा है, और कई कनेक्शन यह प्रयास करता है कि यह प्रक्रिया का हिस्सा है।
recv()
प्रत्येक प्रक्रिया में कांटा और प्रयास करें ।