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


73

कुछ अलग php "रैपर" (?) हैं। उनके बीच क्या अंतर हैं? कुछ के लिए गूगल की कोशिश की, लेकिन कठबोली को खोजने के लिए लगता है। (mod-php googleable नहीं है)।

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

जवाबों:


141

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

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

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

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

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

अब PHP संबंधित बातें:

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

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

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

तो मूल रूप से:

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

शायद मैं स्पष्ट करूंगा कि इस प्रश्न के लिए मुझे क्या प्रेरणा मिली। मुझे बस एक ISPConfig पैनल के साथ एक VPS मिला (पेजों को खोलने के लिए Opensource पैनल)। वहां मैं सर्वर / साइड के लिए PHP संस्करण चुन सकता हूं। और वे वहाँ सूचीबद्ध हैं। तो मूल रूप से ऐसा लगता है कि PHP-FPM को धोखा देना FastCGI को अतिरिक्त "रैपर" के साथ धोखा देता है?
Gacek

12
मुझे नहीं पता कि ISPConfig पैनल वास्तव में क्या उपयोग करता है, लेकिन PHP PHP-FPM के रूप में चलता है, इसका मतलब है कि PHP शुरू करेगा यह स्वयं निर्मित FastCGI सर्वर है और FastCGI प्रोटोकॉल के माध्यम से अनुरोधों को सुनेगा। HTTP सर्वर को इंटरनेट से अनुरोध प्राप्त होंगे, उन्हें आमतौर पर संभालते हुए और अगर PHP का उपयोग करके पृष्ठ चलाने की आवश्यकता होती है, तो अनुरोध FastCGI प्रोटोकॉल को PHP को सौंप दिया जाएगा और परिणाम ब्राउज़र को वापस भेज दिया जाएगा। ब्राउज़र और PHP (PHP-FPM FastCGI) सर्वर के बीच खड़े HTTP सर्वर के रूप में सोचें। PHP-FPM FastCGI प्रोटोकॉल का कार्यान्वयन है।
एलेक क्राजिन

उस विस्तृत विवरण के लिए @ AlešKrajník धन्यवाद। खैर, मैं अलग उपयोगकर्ता / समूह के रूप में php चलाने की कोशिश कर रहा हूँ। इसलिए मैंने Su-exec के साथ शुरुआत की और एक मृत अंत मारा और फिर कुछ लोगों ने php-fpm की सिफारिश की जिसे आपने समझाया है। हालांकि, अभी भी मॉड्यूल mog_cgi, mod_cgid, mod_fastcgi, mod_fcgi और ये कैसे php-fpm के साथ काम करते हैं, के बारे में उलझन में हैं। इसके अलावा मैं एक और ट्यूटोरियल में पढ़ता हूं जो वे mod_fcgid और mod_proxy_fcgi का उपयोग कर रहे थे। समझने के लिए कैसे संघर्ष करना है कि सभी टुकड़े एक साथ कैसे आते हैं।
डेविड ओकवि

1
@landed PHP-FPM बाइनरी 5.3.3 या 5.4.0 के बाद से हर PHP वितरण का एक हिस्सा है (यह जाँच करें: php-fpm.org ), उस विशिष्ट PHP संस्करण के लिए।
एलेक क्राजिन

2
php-fpm सभी आरंभिक लागतों को दूर करने के बारे में है। php-fpm कई php प्रक्रियाएँ शुरू करता है, अनुरोधों को संसाधित करने के लिए तैयार होता है, और जब तक अनुरोध नहीं आता, तब तक उन्हें नींद आती रहती है - जिसका अर्थ है कि यह पारंपरिक cgi की तुलना में बहुत तेज़ी से प्रतिक्रिया दे सकता है, क्योंकि php पहले से ही चल रहा है जब अनुरोध आते हैं, पारंपरिक CGI के विपरीत। जहां प्रत्येक अनुरोध के लिए एक नई php प्रक्रिया शुरू की जाती है, php-fpm भी प्रसंस्करण अनुरोधों के बाद php प्रक्रिया को बंद नहीं करता है, लेकिन समान प्रक्रियाओं का पुन: उपयोग करता रहता है। - प्रक्रिया शुरू करने और रोकने के 0 ओवरहेड के साथ, php-fpm बहुत तेजी से प्रतिक्रिया करता है। प्रक्रिया शुरू करने और रोकने में समय लगता है।
हन्सेन्रिक्रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.