किस PHP (opcode) कैश का उपयोग करना चाहिए और क्यों?


44

मैं कुछ PHP (opcode) कैश के बारे में सुनता रहता हूँ जैसे - APC, XCache, Memcache, eAccelerator, इत्यादि।

लेकिन मैं कभी यह पता नहीं लगा सका कि किसी एक को चुनने के बारे में कैसे जाना जाए। प्रदर्शन लाभ के अलावा, जो एक कैशिंग प्रणाली को वितरित करने के लिए माना जाता है, जो अन्य कारकों को चिंता का विषय होना चाहिए।

जैसे आप कहेंगे कि X कैश सिस्टम Y से बेहतर क्यों है? मैं सापेक्ष प्रदर्शन लाभ के बारे में कम चिंतित हूं। किसी भी दो प्रणालियों के बीच छोटे अंतर कम मायने रखते हैं।

यदि मेरे प्रश्न का एक सामान्य उत्तर संभव नहीं है, तो यहां कुछ संकेत हैं। मैं Mediatemple (रूट एक्सेस के साथ) के साथ समर्पित VPS का उपयोग करता हूं। रैम 512 एमबी (भौतिक) + 400 एमबी (स्वैप) है, मैं वर्डप्रेस और उसके चचेरे भाई वर्डप्रेस-एमयू और बडीप्रेस के बारे में चिंतित हूं। हमारे 90% कोड / साइट वर्डप्रेस परिवार में आते हैं।

कुछ मदद के लिए अग्रिम धन्यवाद।

जवाबों:


33

आपके द्वारा सूचीबद्ध उत्पाद विभिन्न उद्देश्यों की पूर्ति करते हैं।

OPCode कैश

इस विकिपीडिया सूची में कई PHP एक्सेलेरेटर (OPCaches) देखे गए हैं । जैसा कि खुले स्रोत उत्पादों के साथ आम है, वे सभी काफी समान हैं। XCache lighttp PHP त्वरक है, और जब आप उस HTTPd को चला रहे हैं तो डिफ़ॉल्ट पसंद है। यह अपाचे के साथ भी अच्छी तरह से काम करता है, हालांकि एपीसी थोड़ा अधिक "दूसरों के साथ अच्छा खेलता है" सामाजिक रूप से बोल रहा है, आधिकारिक तौर पर PHP के भाग के रूप में समर्थित है, और आधिकारिक PHP वितरण के साथ इन-स्टेप जारी किया गया है।

मैंने इसके धीमी गति से विकास के कारण eAccelerator को त्याग दिया, और PHP की रिलीज़ के खिलाफ पिछड़ गया, और आधिकारिक धन्य स्थिति APC समान प्रदर्शन के साथ प्रदान करता है।

इन उत्पादों को आम तौर पर में छोड़ रहे हैं; कोई कोड परिवर्तन तत्काल प्रदर्शन को बढ़ावा नहीं देता है। बड़े कोडबेस (Drupal, Wordpress) के साथ प्रतिक्रिया समय और मेमोरी उपयोग को कम करते हुए प्रदर्शन 3 गुना बेहतर हो सकता है ।

डाटा कैशिंग

Memcache थोड़ा अलग उत्पाद है - आप इसे एक हल्के कुंजी मूल्य प्रणाली के रूप में सोच सकते हैं जिसे कई सर्वरों पर बढ़ाया जा सकता है । Memcache का समर्थन करने के लिए सॉफ़्टवेयर को बढ़ाया जाना चाहिए, और यह कुछ समस्याओं को दूसरों की तुलना में बेहतर बनाता है। यदि आपके पास अपनी वेबसाइट पर रीयलटाइम स्टॉक मूल्यों की एक सूची है, तो आप अपनी वेबसाइट के सामने प्रदर्शित होने वाले वर्तमान मूल्य की एक निवासी सूची रखने के लिए मेमकेच का उपयोग कर सकते हैं। आप इसका उपयोग अल्पकालिक पुन: उपयोग के लिए सत्र डेटा संग्रहीत करने के लिए कर सकते हैं। आप इसे फुल-पेज कैश या MySQL के प्रतिस्थापन के रूप में अन्य चीजों के लिए उपयोग नहीं करेंगे।

WP-Super-Cache जैसे Wordpress addons भी हैं जो Wordpress के प्रदर्शन को काफी सुधार सकते हैं (infact, WP-Super-Cache कई मामलों में स्थैतिक HTML आधारित साइटों को प्रतिद्वंद्वी कर सकता है)

सारांश में - यदि आप "इसे सेट करना चाहते हैं और अच्छी तरह से समर्थित उत्पाद" भूल जाते हैं, तो मैं एपीसी की अत्यधिक अनुशंसा करूंगा।


इस जवाब पर मेटा पर चर्चा की जा रही है: meta.stackexchange.com/questions/15474/…
ब्रैड गिल्बर्ट

[4]: http://इसे ठीक करने के लिए " " भरें ।
ब्रैड गिल्बर्ट

एक टन SirStan धन्यवाद! आपके जवाब से न केवल मेरी समस्या हल हुई बल्कि मुझे कैशिंग की दुनिया में और अधिक जानकारी प्राप्त करने में मदद मिली। मैं आपसे केवल एक बात पूछना चाहता हूं। मैं पहले से ही wp-supercache का उपयोग कर रहा हूँ। क्या इसे एपीसी के साथ जोड़ना अच्छा है? क्या APC आगे प्रदर्शन में काफी सुधार करेगा? क्या APC और Wp-SuperCache एक साथ काम करेंगे? क्या मुझे उन दोनों की ज़रूरत है? या APC Wp-SuperCache को बेमानी बना देगा?
rahul286

नोट: APC डेटा कैशिंग और ऑप-कोड कैशिंग दोनों करता है।
lo_fye

2
यह उत्तर अब बहुत दिनांकित है। APC को PHP के भविष्य के संस्करणों के लिए अपडेट किए जाने की संभावना नहीं है। वी। 5.5 के बाद से Zend के ऑप्टिमाइज़र और opcode कैश (अब opcache के रूप में जाना जाता है) द्वारा प्रतिस्थापित किया गया है। हालाँकि मैंने प्रदर्शन में पर्याप्त अंतर नहीं देखा है ( symcbean.blogspot.co.uk/2013/09/… )) आगे opcache में डेटा समर्थन की कमी और मेमोरी रिकॉल की कमी कुछ के लिए काउंटर उत्पादक को अपग्रेड कर सकती है।
सिम्बियन

8

स्टैकओवरफ़्लो पर एक अच्छा उत्तर पोस्ट किया गया था जो आपके प्रश्न का अच्छी तरह से उत्तर देता है।

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance


इसका वास्तव में अच्छी चर्चा स्टैकओवरफ्लो पर जा रही है। लिंक के लिए धन्यवाद। :-)
rahul286

6

APC PHP6 में बनाया जाएगा, इसलिए यह एक तार्किक विकल्प है। मैं इसका उपयोग करता हूं, और प्रदर्शन में वृद्धि आश्चर्यजनक है। यदि आपको opcodes (यानी db क्वेरी परिणाम) के अलावा कुछ और कैश करने की आवश्यकता है, तो आप उसके लिए भी APC का उपयोग कर सकते हैं, लेकिन कई सर्वरों के बीच APC कैश साझा करना संभव नहीं है। यदि आपको केवल एकल सर्वर पर कैश करने की आवश्यकता है, तो एपीसी महान है। यदि आपको कई सर्वरों को स्केल करने की आवश्यकता है, और उनके बीच एक कैश साझा करना चाहते हैं, तो मेमेकैक्ड आपका आदमी है।

हालाँकि, एक बात जो आप करते हैं, किसी भी (गैर-ओपोड) कैशिंग के लिए एक रैपर क्लास बनाना है। इस तरह आप अपना कोड बदले बिना कैशिंग इंजन को स्वैप कर सकते हैं।


वाह। अगर मुझे APC की आधिकारिक स्थिति पता होती, तो मैं इसे दीर्घकालिक रूप से बदल देता ... :-) मुझे पता नहीं था कि opcode / गैर-opcode कैश अंतर के बारे में बहुत कुछ पता था। एक व्यक्तिगत पसंद के रूप में, मैं कैशिंग एनवी के साथ अनुकूलन करने में मदद करने के लिए रैपर कक्षाएं बनाने या अपने ऐप्स के स्रोत को संशोधित करने के ओवरहेड से गुजरना नहीं चाहता हूं।
rahul286

6
ध्यान दें कि, चूंकि PHP 5.5 ने Zend Opcache को "आधिकारिक" ओपेक कैश के रूप में एकीकृत किया है, मुझे लगता है कि यह संभावना नहीं है कि वे PHP 6 के लिए APC पर स्विच करेंगे।
Matteo Tassinari

1
इसे ठीक करने के लिए: PHP 5.5 वास्तव में Zend Opcache के साथ जहाज करता है। कोई PHP 6 नहीं होगा। इसके बजाय एक PHP 7 होगा। एपीसी को लगभग अप्रचलित माना जाता है?
जिस्से रीत्समा

6

बस ध्यान दें कि चीजें थोड़ी बदल गई हैं और ऐसा लगता है कि एपीसी PHP 6 कोर में शामिल नहीं किया जाएगा।

APC का विकास धीमा है और ऐसा लगता है कि यह PHP 5.5 संगत नहीं होगा। उसके कारण, PHP के लोग Zend OPCache opcode cache एक्सटेंशन को PHP CORE एक्सटेंशन के रूप में सेट कर रहे हैं। आप यहाँ और अधिक पढ़ें http://wiki.php.net/rfc/optimizerplus

महत्वपूर्ण नोट: Zend OPCache में APC की तरह उपयोगकर्ता डेटा कैश नहीं है, इसलिए यदि आपको उपयोगकर्ता डेटा कैश की आवश्यकता है तो आप Memcache के साथ मिलकर इसका उपयोग कर सकते हैं।


1
जब यह पूर्ण हो जाता है तो यह पूरे कैश को भी अमान्य कर देता है (अमान्य प्रविष्टियाँ नहीं निकाली जाती हैं) - इसलिए यदि आपको मेमोरी से अधिक कोड मिला है या बार-बार तैनात किया गया है, तो प्रदर्शन स्पाइक्स देखने की अपेक्षा करें।
23

3

यदि PHP संस्करण कम से कम 5.50 पर चल रहा है, तो OpCache आपकी सबसे अच्छी शर्त है (PHP / PECL देशी पुस्तकालय)। यह बाइनरी से स्थापित होने पर पूर्व-संकलित होना चाहिए।

http://php.net/manual/en/book.opcache.php

5.5 से पहले PHP संस्करण चलाने पर, APC (PHP / PECL देशी OpCode cache) सबसे सरल विकल्प होगा, हालांकि इसे अस्वीकार्य और मृत माना जाता है:

http://php.net/manual/en/book.apc.php

PHP की मूल OpCache कार्यक्षमता का उपयोग करके आपको 3 पार्टी लाइब्रेरी को बनाए रखने की परेशानी से बचाना चाहिए।


1
अगर PHP <5.5 चल रहा है, तो सबसे पहली चीज जो आपको करनी चाहिए, वह है इसे अपडेट करना।
माइकल हैम्पटन

@ माइकल-हैम्पटन :: वास्तव में! लेकिन कुछ दुर्लभ मामलों में आप ओएस को अपग्रेड किए बिना PHP को अपडेट नहीं कर सकते हैं, जिसका अर्थ एक नई हार्डवेयर आवश्यकता भी हो सकता है। उदाहरण - मैं आईबीएम आई-सीरीज़ सर्वर चलाने वाली कंपनी के लिए काम करता हूं, जो संस्करण 6somethings है। हमारा PHP संस्करण 5.4.3 है। चूंकि IBM PHP संस्करणों को पोर्ट करने के लिए Zend पर निर्भर करता है, PHP 5.6 को IBM-i OS के एक नए संस्करण - 7.1 या नए (और बाद में Zend PHP सर्वर का एक नया संस्करण) की आवश्यकता होती है, जिसके लिए नए Power-8 सर्वर और इतने की आवश्यकता होती है ... मेह।
recurse

0

Memcache कुंजी / मान जोड़े को कैश करता है, न कि opcodes। आप इसे एक ओपकोड कैश के साथ संयोजन के रूप में उपयोग कर सकते हैं।


यह SirStan के उत्तर (नीचे) से लगता है कि मेम्चे को मेरे PHP ऐप्स को संशोधित करने की आवश्यकता हो सकती है। वास्तव में मैं Wordpress का उपयोग कर रहा हूँ और इसके मूल कोड को संशोधित करना एक अच्छा विचार नहीं होगा।
rahul286
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.