Мне всегда было интересно, где хранятся все данные реестра в Magento?
Я знаю, что даже единичные объекты хранятся в реестре. И реестр - это просто переменная статического массива класса Mage .
У меня есть пара вопросов, чтобы очистить мою путаницу:
- Отличается ли реестр для разных пользователей? Я имею в виду, что он создается для каждого пользователя (для HTTP- запроса)?
Например,
Mage::register('foo', 'Hello World'); //set a value for foo Mage::registry('foo'); //will this return hello world for all HTTP users ?
- Хранятся ли данные реестра в сеансах? Если нет, то как Magento определит, какой пользователь вызвал данные реестра?
Я прочитал статью в блоге Алана Шторма, а также его ответ на StackOverFlow по этому поводу. Но я не мог убить путаницу. Пожалуйста, поправьте меня, если вы считаете, что мои основы испорчены. Благодарность
Ответы:
Реестр хранит данные в памяти, которая является специфической для этого запроса (а не пользователя или чего-либо еще) и сохраняется только в течение этого запроса. На самом деле этот принцип очень прост
Mage
: экземпляр создается как одиночный объект для каждого запроса, а созданный объект Mage остается в памяти и доступен во всех классах (и шаблонах) до тех пор, пока запрос не будет завершен и ответ не будет отправлен.Поскольку объект является одноэлементным, при каждом обращении к нему вы получаете один и тот же объект. Все, что происходит, это то, что вы сохраняете значения в этом объекте, поэтому, когда один класс сохраняет значение, а другой обращается к нему, они оба работают с одним и тем же объектом, и второй класс может извлечь значение из первого набора классов.
источник
Mage::register()
сохраняются только для этого запроса. Если вы хотите хранить специфичные для пользователя данные, вам следует использовать сеанс, реестр действительно предназначен для переноса данных между классами.getSingleton()
методMage
класса, он фактически сохраняет данные в реестре.Реестр хранится в памяти и выполняется по HTTP-запросу, поэтому вы не можете обмениваться данными между различными запросами или пользователями.
источник
Реестр Magento хранится в памяти приложения .
когда ваш скрипт завершает работу, все, что вы сохранили в реестре, исчезает, поэтому вам не нужно беспокоиться об его очистке (если только скрипт, который вы запускаете, не хранит большие объекты в реестре и не перебирает много данные).
В этом случае вы должны отменить регистрацию ваших записей, когда вы закончите с ними.
Реестр - это просто статическое свойство класса Mage. смотрите для деталей
но все же я не мог найти хорошее объяснение
2) для каждого пользователя будет отдельный реестр для каждого запроса на сервере.
надеюсь, это прояснит вам немного
источник