Magento रजिस्ट्री को समझना


13

मैं हमेशा सोच रहा था कि मैगेंटो में सभी रजिस्ट्री डेटा कहाँ संग्रहीत हैं?

मुझे पता है कि एकल वस्तुओं को भी रजिस्ट्री में संग्रहीत किया जाता है। और रजिस्ट्री Mage वर्ग का सिर्फ एक स्थिर सरणी चर है ।

मेरी उलझन को दूर करने के लिए मेरे पास कुछ सवाल हैं:

  1. क्या विभिन्न उपयोगकर्ताओं के लिए रजिस्ट्री अलग है? मेरा मतलब है कि यह एक प्रति-उपयोगकर्ता (प्रति HTTP अनुरोध) के आधार पर बनाया गया है ?

उदाहरण के लिए,

Mage::register('foo', 'Hello World'); //set a value for foo
Mage::registry('foo'); //will this return hello world for all HTTP users ?
  1. क्या रजिस्ट्री डेटा सत्रों में संग्रहीत किया जाता है? यदि नहीं, तो Magento किस उपयोगकर्ता को रजिस्ट्री डेटा को लागू करने की पहचान करेगा?

मैंने इसके बारे में स्टैकऑवरफ्लो पर उनके जवाब के साथ-साथ एलन स्टॉर्म के ब्लॉग लेख को पढ़ा है । लेकिन मैं भ्रम को नहीं मार सकता था। कृपया मुझे सही करें अगर मुझे लगता है कि मेरी मूल बातें गड़बड़ हैं। धन्यवाद




धन्यवाद अमित बेरा, मैं इस सवाल को पोस्ट करने से पहले एलन द्वारा उस लेख और SOF जवाब को पढ़ रहा था। मैं वहाँ से अपने उत्तर नहीं पा सका।
हाशिद

जवाबों:


23

रजिस्ट्री डेटा को मेमोरी में संग्रहीत करती है जो उस अनुरोध के लिए विशिष्ट है (उपयोगकर्ता या कुछ और के बजाय), और केवल उस अनुरोध की अवधि के लिए बनी रहती है। सिद्धांत वास्तव में बहुत सरल है, Mageक्लास को हर अनुरोध के लिए एक सिंगलटन ऑब्जेक्ट के रूप में त्वरित किया जाता है और इंस्टेंटेटेड मैज ऑब्जेक्ट मेमोरी में रहता है, और अनुरोध पूरा होने और प्रतिक्रिया भेजे जाने तक सभी वर्गों (और टेम्पलेट्स) में पहुंच योग्य है।

जैसा कि ऑब्जेक्ट एक सिंगलटन है, जब भी आप इसे एक्सेस करते हैं तो आपको वही ऑब्जेक्ट मिलता है। यह सब हो रहा है कि आप इस ऑब्जेक्ट पर मान संग्रहीत कर रहे हैं, इसलिए जब एक वर्ग एक मान संग्रहीत करता है, और दूसरा इसे एक्सेस करता है, तो वे दोनों एक ही ऑब्जेक्ट पर काम कर रहे हैं और दूसरा वर्ग मूल्य को प्रथम श्रेणी सेट प्राप्त करने में सक्षम है।


1
तो यह केवल एक अनुरोध के लिए जीवित है? यदि मैं Magento में एक पृष्ठ लोड करता हूं, तो एक अनुरोध पूरा हो गया है और रजिस्ट्री डेटा फ्लश हो गया है?
हाशिद

4
हां मान आप Mage::register()उस अनुरोध के लिए बने रहते हैं। यदि आप उपयोगकर्ता के विशिष्ट डेटा को सत्र में उपयोग करना चाहते हैं, तो रजिस्ट्री को वास्तव में कक्षाओं के बीच डेटा को पोर्टेबल बनाने के लिए डिज़ाइन किया गया है।
जोनाथन हसी

1
यह समझ आता है! समान एकल उदाहरण पर भी लागू होता है?
हाशिद

1
हां बिल्कुल वैसा ही - यदि आप getSingleton()उस Mageवर्ग की विधि को देखते हैं जो वास्तव में रजिस्ट्री में डेटा संग्रहीत करता है।
जोनाथन हसी

3

रजिस्ट्री मेमोरी में संग्रहीत है और HTTP अनुरोध के अनुसार है, इसलिए आप विभिन्न अनुरोधों या उपयोगकर्ताओं के बीच डेटा साझा करने में सक्षम नहीं हैं।


लेकिन Magento HTTP रिक्वेस्ट और रजिस्ट्री को कैसे मैप करेगा?
हाशिद

2

Magento रजिस्ट्री आवेदन की मेमोरी में संग्रहीत ।

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

ऐसे मामले में, आपको अपनी प्रविष्टियों को अपंजीकृत करना होगा जब आप उनके साथ काम करेंगे।

रजिस्ट्री Mage वर्ग की सिर्फ एक स्थिर संपत्ति है। विवरण के लिए देखें

लेकिन फिर भी मैं वास्तव में एक अच्छी व्याख्या नहीं कर पाया

2) प्रत्येक उपयोगकर्ताओं के लिए सर्वर पर प्रति अनुरोध अलग रजिस्ट्री होगी।

आशा है कि यह आपके दिमाग में थोड़ा स्पष्ट कर देगा


धन्यवाद लियाकत मैं पोस्ट करने से पहले prattski.com/2014/09/23/use-the-magento-registry-mageregister पढ़ता हूं : पी लेकिन मैगेंटो चर और उपयोगकर्ता को कैसे मैप करेगा?
हाशिद

1
@ हाशिद, आप एलन के ब्लॉग के साथ और अधिक विचार प्राप्त कर सकते हैं। कोड फॉलो में प्रत्येक अनुरोध के साथ रजिस्ट्री कैसे काम कर रही है। alanstorm.com/magento_registry_singleton_tutorial
liyakat

यह भी पढ़ें :-)
हाशिद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.