की एक संख्या हैं एम पी एम मॉड्यूल तीन मुख्य हैं (मल्टी प्रसंस्करण मॉड्यूल), लेकिन अब तक का सबसे व्यापक रूप से इस्तेमाल (कम से कम * nix प्लेटफार्मों पर): prefork
, worker
, और event
। अनिवार्य रूप से, वे अपाचे वेब सर्वर के विकास का प्रतिनिधित्व करते हैं, और विभिन्न तरीकों से सर्वर को उसके लंबे (सॉफ्टवेयर शब्दों में) इतिहास के समय की कंप्यूटिंग बाधाओं के भीतर HTTP अनुरोधों को संभालने के लिए बनाया गया है।
mpm_prefork
है .. अच्छी तरह से .. यह सब कुछ के साथ संगत है। यह सेवारत अनुरोधों के लिए कई बाल प्रक्रियाओं को बंद कर देता है, और बच्चे की प्रक्रियाएं एक समय में केवल एक अनुरोध पर काम करती हैं। क्योंकि यह सर्वर की प्रक्रिया को वहां बैठे हुए, कार्रवाई के लिए तैयार है, और थ्रेड मार्शलिंग से निपटने की आवश्यकता नहीं है, यह वास्तव में अधिक आधुनिक थ्रेडेड एमपीएम से तेज है जब आप केवल एक समय में एक ही अनुरोध के साथ काम कर रहे हैं - लेकिन समवर्ती अनुरोध पीड़ित हैं, जब से वे लाइन में प्रतीक्षा करने के लिए बना रहे हैं जब तक कि एक सर्वर प्रक्रिया मुफ्त नहीं है। इसके अतिरिक्त, प्रीफ़ॉर्क बाल प्रक्रियाओं की गिनती में बड़े पैमाने पर प्रयास करने से आप आसानी से कुछ गंभीर रैम को चूस लेंगे।
यह संभव नहीं है कि जब तक कि आपको थ्रेड सुरक्षित न हो, एक मॉड्यूल की आवश्यकता नहीं है।
यदि उपयोग करें: आपको उन मॉड्यूल की आवश्यकता होती है जो थ्रेड्स का उपयोग करने पर टूट जाते हैं, जैसे mod_php
। फिर भी, FastCGI और का उपयोग करने पर विचार करें php-fpm
।
उपयोग न करें यदि: आपके मॉड्यूल थ्रेडिंग में नहीं टूटेंगे।
mpm_worker
थ्रेडिंग का उपयोग करता है - जो कि संगामिति के लिए एक बड़ी मदद है। कार्यकर्ता कुछ बच्चे प्रक्रियाओं को बंद कर देता है, जो बदले में बच्चे के धागे को स्पिन करता है; आवक के समान, आने वाले कनेक्शनों की सेवा के लिए, यदि संभव हो तो कुछ अतिरिक्त धागे तैयार रखे जाते हैं। यह दृष्टिकोण रैम पर बहुत दयालु है, क्योंकि थ्रेड काउंट का मेमोरी उपयोग पर सीधा असर नहीं पड़ता है जैसे कि सर्वर काउंट प्रीफ़ॉर्क में होता है। यह भी अधिक आसानी से संगामिति को संभालता है, क्योंकि कनेक्शन के लिए केवल एक मुफ्त थ्रेड (जो आमतौर पर उपलब्ध है) के लिए प्रीफ़ॉर्क में एक स्पेयर सर्वर के बजाय इंतजार करना पड़ता है।
उपयोग करें यदि: आप Apache 2.2, या 2.4 पर हैं और आप प्राथमिक रूप से SSL चला रहे हैं।
उपयोग न करें यदि: आप वास्तव में गलत नहीं हो सकते, जब तक कि आपको संगतता के लिए प्रीफ़ॉर्क की आवश्यकता न हो।
हालांकि, ध्यान दें कि treads कनेक्शन से जुड़ा हुआ है और अनुरोध नहीं है - जिसका अर्थ है कि एक ज़िंदा कनेक्शन हमेशा एक धागे की पकड़ रखता है जब तक कि यह बंद न हो (जो आपके कॉन्फ़िगरेशन के आधार पर एक लंबा समय हो सकता है)। जिसके कारण हमारे पास है ।।
mpm_event
कार्यकर्ता के समान है, संरचनात्मक रूप से; इसे सिर्फ अपाचे 2.4 में 'प्रायोगिक' से 'स्थिर' स्थिति में ले जाया गया है। बड़ा अंतर यह है कि यह रखे गए जीवित कनेक्शन से निपटने के लिए एक समर्पित धागे का उपयोग करता है, और हाथ केवल बच्चे के धागे के लिए अनुरोध करते हैं, जब वास्तव में एक अनुरोध किया गया होता है (अनुरोध पूरा होने के तुरंत बाद उन थ्रेड को वापस मुक्त करने की अनुमति देता है)। यह उन ग्राहकों की संगति के लिए बहुत अच्छा है जो एक समय में सभी सक्रिय नहीं हैं, लेकिन कभी-कभार अनुरोध करते हैं, और जब ग्राहकों को लंबे समय तक जीवित रहना पड़ सकता है।
एसएसएल कनेक्शन के साथ यहां अपवाद है; उस स्थिति में, यह कार्यकर्ता के लिए समान रूप से व्यवहार करता है (जब तक कि कनेक्शन बंद नहीं हो जाता है तब तक किसी दिए गए थ्रेड में दिए गए कनेक्शन को gluing)।
यदि उपयोग करें: आप अपाचे 2.4 पर हैं और थ्रेड्स पसंद करते हैं, लेकिन आप बेकार कनेक्शन की प्रतीक्षा कर रहे थ्रेड्स को पसंद नहीं करते। सभी को धागे पसंद हैं!
यदि आप उपयोग नहीं कर रहे हैं : आप अपाचे 2.4 पर नहीं हैं, या आपको संगतता के लिए प्रीफ़ॉर्क की आवश्यकता है।
आज के दौर में , अपने सर्वर में 6 टीसीएल कनेक्शन (बेशक-जिंदा रहने के साथ) को मल्टीप्लेक्स , AJAX और ब्राउजर की तरह, अपने सर्वर के पैमाने और पैमाने को अच्छी तरह से बनाने के लिए कंसीडर एक महत्वपूर्ण कारक है। अपाचे के इतिहास ने इसे इस संबंध में बांध दिया है, और जबकि यह वास्तव में अभी भी संसाधन उपयोग या पैमाने के संदर्भ में nginx या lighttpd की पसंद के अनुरूप नहीं है, यह स्पष्ट है कि विकास टीम एक वेब सर्वर के निर्माण की दिशा में काम कर रही है जो अभी भी प्रासंगिक है आज के हाई-रिक्वेस्ट-कॉन्सेप्ट की दुनिया में।