सवाल अंतर और डी / एडवांस के बीच: फास्ट-सीजीआई, सीजीआई, मॉड-पीएचपी, एसयूपीएचपी, पीएचपी-एफपीएम


कुछ अलग php "wrappers" (?) हैं। उनके बीच मतभेद क्या हैं? कुछ गूगल करने का प्रयास किया, लेकिन सूचनाएं नहीं मिलतीं। (mod-php googleable नहीं है)।

मैं एक दूसरे को क्यों चुन सकता हूं?


59
2017-11-20 10:31


मूल




जवाब:


प्रश्न थोड़ा अजीब है, यह स्पष्ट नहीं है कि आप केवल PHP के लिए पूछ रहे हैं या आपका प्रश्न अधिक सामान्य है।

मैं आपको PHP पक्ष से एक संक्षिप्त अवलोकन प्रदान करूंगा।

सबसे पहले, दो प्रोटोकॉल:

  • सीजीआई स्क्रिप्ट एक HTTP अनुरोध होने पर सर्वर साइड स्क्रिप्ट को चलाने का तरीका है; इसका PHP के साथ कुछ लेना देना नहीं है

  • फास्टसीजीआई एक "बेहतर सीजीआई" है - सीजीआई धीमी होने के लिए जाना जाता है, फास्ट सीजीआई बहुत तेजी से परिणाम के साथ एक अलग दृष्टिकोण है; इसमें PHP के साथ कुछ भी नहीं है।

अब PHP संबंधित चीजें:

  • mod_php अपाचे मॉड्यूल के रूप में एक PHP चला रहा है - यह PHP अनुरोध अपाचे प्रक्रिया के तहत चलाया जाता है जो इसके साथ आता है - अपाचे प्रक्रियाओं को अपाचे कॉन्फ़िगरेशन द्वारा परिभाषित किया जाता है, PHP अपाचे अनुमति आदि के साथ चलाया जाता है।

  • पीएचपी-एफ पी एम PHP का फास्टसीजीआई कार्यान्वयन है; PHP-FPM एक स्टैंडअलोन FastCGI सर्वर के रूप में चलता है और अपाचे अपाचे के मॉड्यूल का उपयोग कर सर्वर से कनेक्ट होता है, आमतौर पर mod_fcgid या mod_fastcgi; मैं व्यक्तिगत रूप से सोचता हूं कि यह mod_php के रूप में चलने से काफी बेहतर है, लेकिन यह आपकी आवश्यकताओं पर निर्भर करता है और यह थोड़ा और जटिल भी है; इस कॉन्फ़िगरेशन में, अनुमति, संबंधित सामग्री को संसाधित करता है और सबकुछ PHP कॉन्फ़िगरेशन, PHP उपयोगकर्ता आदि के अंतर्गत चलाया जाता है और अपाचे सर्वर के रूप में PHP से कनेक्ट होता है; इस कॉन्फ़िगरेशन में PHP सर्वर का पूल होना और अपाचे की तुलना में शारीरिक रूप से अलग मशीन पर PHP सर्वर होना भी संभव है। वे कहते हैं कि यह अपाचे के मॉड्यूल का उपयोग करने के लगभग तेज़ है और PHP कॉन्फ़िगरेशन पर बेहतर नियंत्रण के लाभ हैं।

  • SuPHP - यह ज्यादातर अनुमतियों से संबंधित mod_php की कुछ समस्याओं को हल करने के लिए प्रयोग किया जाता था; mod_php PHP स्क्रिप्ट्स अपाचे उपयोगकर्ता / समूह के अंतर्गत चलती हैं; mod_suphp अलग-अलग उपयोगकर्ता में स्क्रिप्ट चला सकता है; मैंने कभी इसका इस्तेमाल नहीं किया, PHP-FPM अब बहुत बेहतर विकल्प होना चाहिए

तो मूल रूप से:

  • सीजीआई, फास्ट-सीजीआई प्रोटोकॉल हैं; सीजीआई धीमा है, फास्ट-सीजीआई बहुत तेज़ है
  • mod_php (अंडरस्कोर के साथ) और PHP-FPM PHP को चलाने के लिए दो बुनियादी तरीके हैं
  • mod_SuPHP mod_php के समान है लेकिन उस उपयोगकर्ता / समूह को बदल सकता है जिस पर प्रक्रिया चलती है

121
2017-11-20 11:05



हो सकता है कि मैं स्पष्ट करूंगा कि इस सवाल के लिए मुझे क्या प्रेरित किया। मुझे अभी एक आईएसपीकोनफिग पैनल (व्यवस्थापक पृष्ठों के लिए ओपनसॉर्स पैनल) के साथ एक वीपीएस मिला है। वहां मैं सर्वर / साइड के लिए एक PHP संस्करण चुन सकता हूं। और वे वहां सूचीबद्ध हैं। तो मूल रूप से ऐसा लगता है कि PHP-FPM को अतिरिक्त "रैपर" के साथ फास्टसीजीआई चुनता है? - Gacek
मुझे नहीं पता कि आईएसपीकॉन्फिग पैनल वास्तव में क्या उपयोग करता है, लेकिन पीएचपी-एफपीएम के रूप में PHP का मतलब है कि PHP अपने स्वयं के अंतर्निहित फास्टसीजीआई सर्वर को शुरू करेगा और फास्टसीजीआई प्रोटोकॉल के माध्यम से अनुरोधों को सुनेंगे। HTTP सर्वर को इंटरनेट से अनुरोध प्राप्त होंगे, उन्हें आमतौर पर संभालने के लिए और यदि किसी पृष्ठ को PHP का उपयोग करके चलाने की आवश्यकता है, तो अनुरोध फास्टसीजीआई प्रोटोकॉल को PHP पर सौंप दिया जाएगा और परिणाम ब्राउज़र पर वापस भेजा जाएगा। इसके बारे में सोचें कि HTTP सर्वर ब्राउज़र और PHP (PHP-FPM FastCGI) सर्वर के बीच खड़ा है। PHP-FPM FastCGI प्रोटोकॉल का कार्यान्वयन है। - Aleš Krajník
@ AlešKrajník उस विस्तृत स्पष्टीकरण के लिए धन्यवाद। खैर, मैं अलग उपयोगकर्ता / समूह के रूप में php चलाने की कोशिश कर रहा हूं। तो मैंने सु-एक्सेल के साथ शुरुआत की और एक मृत अंत मारा और फिर कुछ लोगों ने आपको एफपी-एफपीएम की सिफारिश की जो आपने समझाया है। हालांकि, अभी भी मॉड्यूल mog_cgi, mod_cgid, mod_fastcgi, mod_fcgi और php-fpm के साथ यह काम करने के बारे में उलझन में हूं। इसके अलावा मैंने एक और ट्यूटोरियल में पढ़ा जो वे mod_fcgid और mod_proxy_fcgi का उपयोग कर रहे थे। यह समझने के लिए कि कैसे सभी टुकड़े एक साथ आते हैं। - David Okwii
@landed PHP-FPM बाइनरी 5.3.3 या 5.4.0 के बाद से प्रत्येक PHP वितरण का हिस्सा है (इसे जांचें: php-fpm.org), उस विशिष्ट PHP संस्करण के लिए। - Aleš Krajník
php-fpm प्रारंभिक लागत को हटाने के बारे में सब कुछ है। php-fpm कई php प्रक्रियाओं को पूर्व-प्रारंभ करता है, अनुरोधों को संसाधित करने के लिए तैयार होता है, और जब तक अनुरोध आते हैं तब तक उन्हें नींद आती है - जिसका अर्थ है कि यह परंपरागत सीजीआई की तुलना में बहुत तेज प्रतिक्रिया दे सकता है, क्योंकि पारंपरिक सीजीआई के विरोध में अनुरोध आने पर PHP पहले ही चल रहा है, जहां प्रत्येक अनुरोध के लिए एक नई PHP प्रक्रिया शुरू की जाती है, php-fpm अनुरोध संसाधित करने के बाद php प्रक्रिया को बंद नहीं करता है, लेकिन उसी प्रक्रियाओं का पुन: उपयोग करते रहें। - प्रक्रियाओं को शुरू करने और रोकने के 0 ओवरहेड के साथ, php-fpm बहुत तेज प्रतिक्रिया देता है। प्रक्रियाओं को शुरू करना और रोकना समय लगता है। - hanshenrik