Eu sempre me perguntei, onde estão todos os dados do registro armazenados no Magento?
Eu sei que até objetos singleton são armazenados no registro. E o registro é apenas uma variável de matriz estática da classe Mage .
Tenho algumas perguntas aqui para esclarecer minha confusão:
- O registro é diferente para usuários diferentes? Quero dizer, ele é criado por usuário (por solicitação HTTP )?
Por exemplo,
Mage::register('foo', 'Hello World'); //set a value for foo Mage::registry('foo'); //will this return hello world for all HTTP users ?
- Os dados do registro são armazenados em sessões? Caso contrário, como o Magento identificará qual usuário chamou os dados do registro?
Eu li o artigo do blog de Alan Storm e sua resposta no StackOverFlow sobre isso. Mas não consegui matar a confusão. Por favor, corrija-me Se você acha que meu básico está bagunçado. obrigado
Respostas:
O registro armazena dados na memória que é específico a essa solicitação (em vez de usuário ou qualquer outra coisa) e persiste apenas pela duração dessa solicitação. O princípio é realmente muito simples, a
Mage
classe é instanciada como um objeto singleton para cada solicitação e o objeto Mage instanciado permanece na memória e é acessível em todas as classes (e modelos) até que a solicitação seja concluída e a resposta seja enviada.Como o objeto é um singleton, sempre que você acessa, obtém o mesmo objeto. Tudo o que está acontecendo é que você está armazenando valores para esse objeto; portanto, quando uma classe armazena um valor e a outra acessa, eles estão trabalhando no mesmo objeto e a segunda classe é capaz de recuperar o valor definido pela primeira classe.
fonte
Mage::register()
persistem apenas para essa solicitação. Se você deseja armazenar dados específicos do usuário, use a sessão, o registro é realmente projetado apenas para tornar os dados portáteis entre as classes.getSingleton()
método daMage
classe, ele realmente armazenará os dados no registro.O registro é armazenado na memória e é por solicitação HTTP; portanto, você não pode compartilhar dados entre diferentes solicitações ou usuários.
fonte
Magento Registry armazenado na memória do aplicativo .
sempre que o script é executado, o que você armazenou no registro se foi, portanto, não há necessidade de se preocupar em limpá-lo (a menos que o script que você está executando esteja armazenando objetos grandes no registro e esteja percorrendo muitas dados).
Nesse caso, é necessário cancelar o registro de suas entradas quando terminar.
o registro é apenas uma propriedade estática da classe Mage. veja para detalhes
mas ainda não consegui descobrir uma boa explicação
2) para cada usuário, haverá um registro separado por solicitação no servidor.
espero que isso fique pouco claro em sua mente
fonte