Symfony2: कैश को स्वयं प्रबंधित करना
वेब एजेंसी » डिजिटल समाचार » Symfony2: कैश को स्वयं प्रबंधित करना

Symfony2: कैश को स्वयं प्रबंधित करना

कंप्यूटिंग में और सौभाग्य से कहीं और कैश मौजूद है। इसके बिना, प्रसंस्करण समय बहुत लंबा होगा! ऐसे समय में जब नाम के योग्य सभी ढांचे कैश सिस्टम का उपयोग करते हैं, हमें कैश को स्वयं प्रबंधित करने की आवश्यकता क्यों होगी?

Symfony2 में कैश

Symfony2 में, आप आसानी से एक कैश सिस्टम सेट अप कर सकते हैं। इसके अलावा, अगर हम सटीक होना चाहते हैं, तो ऐसा लगता है कि सिम्फनी की अपनी कैश सिस्टम (ऐप/कैश/env/), और यह कि हम सर्वर स्तर (Apache, IIS, ...) पर एक कैश सिस्टम भी लगा सकते हैं। यह कैश पूरी तरह से प्रबंधनीय है और मेमोरी अस्थिर है। जैसे ही सर्वर पुनरारंभ होता है सर्वर कैश हटा दिया जाता है।

कैशिंग सिस्टम

कौन से कैशिंग सिस्टम मौजूद हैं? स्मृति से, तीन कार्यक्रम नियमित रूप से सामने आते हैं।

  • एक्स कैश
  • memcached
  • एपीसी
    एपीसी अब है पदावनत PHP 5.4 के बाद से, इसलिए मैं इसे प्लग इन करने की कोशिश करने की सलाह नहीं देता।

मेरे मामले में, मैं XCache का उपयोग करूंगा। आप XCache कैसे स्थापित करें पर मेरी पोस्ट भी पा सकते हैं।

अपने कैश का प्रबंधन स्वयं क्यों करें

मैं कुछ टिप्पणियां देख सकता हूं और पूछ रहा हूं "क्यों? "। जबकि सिद्धांत आपको इसकी विधि के माध्यम से कैश का आसानी से उपयोग करने की अनुमति देता है useResultCache(उपयोग, विलंब, आईडी). मेरा उत्तर सरल है: निःशुल्क उपचार करना।

आपको कुछ विचार देने के लिए एक छोटा सा उदाहरण। मान लीजिए कि मैं डेटाबेस से किसी आइटम को कैशिंग कर रहा हूं। अगर मैं इस इकाई को संशोधित करता हूं, तो डेटा समाप्त होने तक कैश अपडेट नहीं किया जाएगा। एक व्यक्तिगत कैश प्रबंधन के साथ, मैं नए डेटा को फिर से सेट करने और पुराने को ओवरराइट करने के लिए आवंटित समय तक पहुंचने से पहले ही सक्षम हो जाऊंगा। इसके लिए महत्वपूर्ण प्रबंधन की आवश्यकता होती है, लेकिन प्रदर्शन लाभ पर्याप्त हो सकते हैं।

Symfony2 और अपने स्वयं के कैश का प्रबंधन कैसे करें

मैं आपको आसानी से प्रबंधित करने के लिए यह छोटा मेमो कोड प्रदान करता हूं। हमारे मामले में, इस Gist का कार्य SQL क्वेरी के परिणाम को वापस करना है।

प्रोटोटाइप: फ़ंक्शन निष्पादित ($sql_query, $id = null, $delay = 3600);
सेटिंग्स:

  1. _एसक्यूएलसवाल उस SQL ​​क्वेरी से मेल खाता है जिसे आप निष्पादित करना चाहते हैं।
  2. id कैश्ड डेटा के लिए बाध्य पहचानकर्ता है। एक आईडी x के लिए, आपके पास एक सामग्री x होगी।
  3. देरी आपके द्वारा दी गई अधिकतम समय सीमा मान्य होगी। डिफ़ॉल्ट रूप से, 3600 सेकंड। इसका मतलब है कि आपके डेटा को कैश करने के बाद यह 3600 सेकंड के लिए उपलब्ध रहेगा।
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    समारोह निष्पादित ($ sql_query, $ आईडी = अशक्त, $ विलंब = 3600)
    {
    // हम एक कैश उदाहरण घोषित करते हैं
    $कैशड्राइवर = नई सिद्धांत कॉमन कैशएक्स कैश कैश ();
    $ परिणाम = रिक्त;
    // यदि कोई आईडी दर्ज की गई थी और कैश सिस्टम में आईडी "x" के लिए डेटा है
    if ($ आईडी! = रिक्त && $cacheDriver->Contains($id)) {
    // फिर हम एक आईडी "x" के लिए कैश्ड डेटा लेते हैं
    $results = $cacheDriver->fetch($id);
    }
    // यदि कोई डेटा नहीं है, यदि कैश्ड डेटा शून्य के बराबर है
    if ($ परिणाम == रिक्त) {
    // हम डेटा पुनर्प्राप्त करते हैं
    $ परिणाम = इस $-> कंटेनर-> प्राप्त करें ("सिद्धांत")->getManager()->getRepository("नेमस्पेसनामबंडल: इकाई")->findAll();
    // अगर हमारे पास कैशिंग आईडी है
    if ($ आईडी! = रिक्त) {
    // हम डेटा को एक आईडी x और विलंब y के लिए सहेजते हैं
    $cacheDriver->save($id, $results, intval($delay));
    }
    }
    // हम भविष्य के अनुरोधों को सीमित करके परिणाम लौटाते हैं
    वापसी $ परिणाम;
    }

खैर, मुझे उम्मीद है कि यह मेमो आपकी मदद करेगा। जल्द ही मिलते हैं और इस पोस्ट को पढ़ने के लिए धन्यवाद!

★ ★ ★ ★ ★