2009-02-28 15 views
20

मैं वर्तमान में एपीसी सक्षम (अपाचे + mod_fastcgi के तहत, अगर यह मायने रखता है) के साथ PHP/FastCGI की कई प्रतियां चला रहा हूं। क्या मैं प्रक्रियाओं के बीच कैश साझा कर सकता हूं? मैं कैसे जांच सकता हूं कि यह पहले से साझा किया गया है या नहीं? के रूप में द्वारा रिपोर्ट (मुझे लगता है कि apc.mmap_file_mask आरं सेटिंग शामिल हो सकता है, लेकिन मैं यह कैसे उपयोग करने के लिए पता नहीं है।)फास्टसीजीआई के तहत चलते समय कई PHP प्रक्रियाओं के बीच एपीसी कैश कैसे साझा करें?

(कारणों मुझे लगता है कि में से एक अपने नहीं पल में साझा, कि apc.mmap_file_mask है apc.php वेब इंटरफ़ेस लगभग 3 अलग-अलग मानों के बीच फ़्लिप करता है जैसे कि मैं पुनः लोड करता हूं।)

उत्तर

20

एपीसी वर्तमान में फास्टसी या एफसीजीआईडी ​​के तहत चल रहे एकाधिक php-cgi श्रमिकों के बीच अपना कैश साझा नहीं करता है। विवरण के लिए this feature request देखें: "यह व्यवहार अब तक का इरादा है"।

एक वर्कअराउंड PHP को अपने कर्मचारियों को प्रबंधित करने की अनुमति देना है। आप इसे अपने रैपर स्क्रिप्ट में PHP_FCGI_CHILDREN पर्यावरण चर का उपयोग करके कर सकते हैं (इसके लिए पूरे वेब पर उदाहरणों के बहुत सारे)। यदि आप इस विधि का उपयोग करना चाहते हैं तो आपको एक से अधिक PHP प्रक्रिया को बढ़ाने से फास्टसीजी/एफसीजीआईडी ​​को भी रोकना चाहिए।

PHP_FCGI_CHILDREN के साथ नुकसान यह है कि श्रमिकों का प्रबंधन एफसीजीआईडी ​​/ फास्टसीजी द्वारा प्रदान किया गया उतना अच्छा नहीं है।

तो, हम वहां हैं। एक एफसीजीआईडी ​​/ फास्टसीजी पर्यावरण में एपीसी का अर्थ है कि प्रत्येक PHP कार्यकर्ता को अपना स्वयं का कैश देना, या PHP के अंतर्निहित प्रबंधन के पक्ष में fcgid/fastcgi की प्रक्रिया को अक्षम करना। आइए आशा करते हैं कि भविष्य में ये बदलाव आएंगे।

+4

एक और टिप्पणी के अनुसार, mod_fastcgi को केवल php-cgi के एक उदाहरण को शुरू करने के लिए कॉन्फ़िगर करने के लिए (ताकि php-cgi स्वयं श्रमिकों को संभाल सके, और इसलिए कैश साझा करें), httpd.conf में "FastCgiConfig -maxClassProcesses 1" के साथ है। Http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html भी देखें। – mjs

+0

बग # 57825 बंद कर दिया गया है। क्या PHP अब इसका समर्थन करता है? – mgutt

+4

एफपीएम इसका समर्थन करता है, और अधिकांश fcgid/fastcgi- आधारित समाधानों को हटा दिया है। जब आप इसे बड़े पूल में श्रमिकों के बीच साझा करते हैं तो एपीसी के पास कभी-कभी ताले (विवाद, डेडलॉक्स) के साथ कभी-कभी समस्याएं होती हैं, लेकिन यह बहुत अच्छी तरह से काम करती है (और * फ़ाइल/ओपोड कैशिंग के लिए बहुत अच्छी तरह से अच्छी तरह से काम करती है), और एफपीएम में निर्मित सुरक्षायां हैं (segfault पहचान) जब एपीसी सामान भरता है।(हालांकि, यह deadlocks के लिए मदद नहीं करता है।) –

0

कैश प्रक्रियाओं के बीच साझा किया जाना चाहिए। आपको phpinfo() और apc.php invocations के बीच mmap फ़ाइल के लिए समान मान देखना चाहिए। यह मेरे लिए सुझाए गए डिफ़ॉल्ट एपीसी कॉन्फ़िगरेशन सेटिंग्स के साथ काम कर रहा है:

extension="apc.so" 
apc.enabled=1 
apc.shm_segments=1 
apc.shm_size=128 
apc.ttl=7200 
apc.user_ttl=7200 
apc.num_files_hint=1024 
apc.mmap_file_mask="/tmp/apc.XXXXXX" 
apc.enable_cli=1 

आप अपनी सेटिंग्स पोस्ट करना चाह सकते हैं। मैंने चेतावनियां देखी हैं कि mmap_file_mask उन मानों में से एक होना चाहिए जो वे अनुमति देते हैं। तो यदि आप उन एक्स में से किसी एक को याद कर रहे हैं तो आपको यह नहीं बताएगा कि आपको क्या मिलेगा।

शायद इसमें आपकी fastcgi + apache कॉन्फ़िगरेशन शामिल है।

+0

सचमुच, मुझे नहीं लगता कि यह वास्तव में आपके लिए काम कर रहा है। यदि आप पृष्ठों को रीफ्रेश करते हैं, तो आपको आमतौर पर उसी php-cgi कार्यकर्ता द्वारा किसी भी कारण से (KeepAlive शायद?), विशेष रूप से (और मैं यह नहीं कह रहा हूं) यदि आपका सर्वर पूरी ढेर के नीचे नहीं है भार का –

10

हालांकि यह सही नहीं है कि डोमस्टर सुझाया गया तरीका सबसे अच्छा है। मैं त्रुटियों के बिना कुछ कम मात्रा साइटों पर थोड़े समय के लिए ऐसा कर रहा हूं। मैंने कल रात how to set up mod_fastcgi with a shared opcode cache पर एक विस्तृत स्पष्टीकरण लिखा था।

मुझे नए mod_fcgid की बजाय mod_fastcgi का उपयोग करना बहुत महत्वपूर्ण लगता है क्योंकि mod_fcgid PHP प्रक्रिया के लिए एक समय में केवल एक अनुरोध भेजेगा चाहे इस बात के बावजूद कि PHP PHP_FCGI_CHILDREN के माध्यम से कितने बच्चे पैदा हुए हैं।

+0

आपके लेख को पसंद आया - इसे Google में इस धागे से ऊपर मिला! – benlumley

+0

महान जवाब! यह मुझे 'mod_fcgid' के साथ मेरी समवर्ती समस्या को हल करने में भी मदद करता है! – vdboor

+0

महान लेख! यह भी देखें http://whorka.github.com/blog/2012/02/08/apache-mod_fastcgi-suexec-php-apc-rhel.html –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^