ऐसी दो चीजें हैं जिनके बारे में आपको सोचने की आवश्यकता है।
पहला यह है कि आपके वेब सर्वर को कैसे कॉन्फ़िगर किया गया है। यदि आप अपाचे का उपयोग कर रहे हैं, तो कुछ processing modules हैं जिन्हें से चुना जा सकता है। सबसे लोकप्रिय प्रसंस्करण मॉड्यूल prefork है, जिसमें एक एकल मूल प्रक्रिया और एकाधिक बाल प्रक्रियाएं होती हैं। प्रत्येक बच्चे एक समय में एक अनुरोध संभालता है। यह पूरी तरह से थ्रेडिंग से बचाता है, क्योंकि सभी अपाचे मॉड्यूल थ्रेड सुरक्षित नहीं हैं। आपको उत्पादन में कहीं भी कर्मचारी मॉड्यूल भी मिल सकता है। यह प्रति बच्चे कई अनुरोधों को पूरा करने के लिए फोर्किंग व्यवहार और थ्रेडिंग के संयोजन का उपयोग करता है। इसका उपयोग केवल तभी किया जा सकता है जब प्रत्येक एकल अपाचे मॉड्यूल और इसकी सभी निर्भरता थ्रेड सुरक्षित हैं।
दूसरी बात यह सोचने के लिए है कि PHP स्वयं ही है। जबकि कोर PHP भाषा और कुछ एक्सटेंशन थ्रेड सुरक्षित हैं, कई एक्सटेंशन थ्रेड सुरक्षित नहीं हैं। इस कारण से, जब आप अपाचे और mod_php का उपयोग कर रहे हैं, तो प्रीफ़ोर प्रोसेसिंग मॉड्यूल आपकी सबसे अच्छी पसंद है। (PHP में स्वयं धागे की कोई आंतरिक अवधारणा नहीं है।)
tl; dr: अपाचे + PHP = अपाचे बच्चे प्रति अनुरोध। आपके पास आमतौर पर केवल 20-30 अपाचे बच्चे होंगे, जिसका अर्थ है 20-30 संभावित समवर्ती अनुरोध। यह विन्यास पर निर्भर करता है।
बहुत धन्यवाद। तो शायद मेल एक अच्छा उदाहरण नहीं था। अन्य कार्रवाइयों के बारे में, कहें, अगर सबमिट डेटाबेस अनुरोध को ट्रिगर करता है, या स्थानीय सर्वर-साइड गणना जो 10 सेकंड लेती है। क्या एक्स एक्स वर्कर थ्रेड का उपयोग करके समवर्ती रूप से किया जाएगा? – JasonGenX
अपाचे में अनुकरण करने वाली कई बाल प्रक्रियाएं होंगी। कॉफ़िगरेशन द्वारा परिभाषित इन प्रक्रियाओं की अधिकतम संख्या है। प्रत्येक बच्चे की प्रक्रिया अधिक धागे शुरू कर सकती है (यह आमतौर पर स्टार्टअप पर किया जाता है, और कोई थ्रेड रनटाइम नहीं बनाया जाता है)। - तो यह एक समस्या नहीं होनी चाहिए एक प्रक्रिया कुछ सेकंड के लिए रुकती है, लेकिन आपको इसकी कॉन्फ़िगरेशन करते समय इसके बारे में अवगत होना चाहिए। – vbence
तो जब मैं थ्रेड-फ्री PHP कोड लिखता हूं, तो मैं मान सकता हूं कि अपाचे पर कॉन्फ़िगरेशन के अनुसार क्रियाएं एक साथ की जाएंगी? मैं "एकल उपयोगकर्ता" के साथ दिमाग में कोड? – JasonGenX