Siempre me he estado preguntando, ¿dónde están almacenados todos los datos de registro en Magento?
Sé que incluso los objetos únicos se almacenan en el registro. Y el registro es solo una variable de matriz estática de la clase Mage .
Tengo un par de preguntas aquí para aclarar mi confusión:
- ¿El registro es diferente para diferentes usuarios? Quiero decir, ¿se crea por usuario (por solicitud HTTP )?
Por ejemplo,
Mage::register('foo', 'Hello World'); //set a value for foo Mage::registry('foo'); //will this return hello world for all HTTP users ?
- ¿Los datos de registro se almacenan en sesiones? Si no, ¿cómo identificará Magento qué usuario invocó los datos del registro?
He leído el artículo del blog de Alan Storm, así como su respuesta en StackOverFlow con respecto a esto. Pero no pude matar la confusión. Corrígeme si creo que mis conceptos básicos están en mal estado. Gracias
Respuestas:
El registro almacena datos en la memoria que es específica para esa solicitud (en lugar de usuario o cualquier otra cosa), y persiste durante la duración de esa solicitud solamente. El principio es muy simple en realidad, la
Mage
clase se instancia como un objeto singleton para cada solicitud y el objeto Mage instanciado permanece en la memoria, y es accesible en todas las clases (y plantillas) hasta que se complete la solicitud y se envíe la respuesta.Como el objeto es un singleton, cada vez que accedes a él obtienes el mismo objeto. Todo lo que está sucediendo es que está almacenando valores en este objeto, por lo que cuando una clase almacena un valor y otra accede a él, ambos trabajan en el mismo objeto y la segunda clase puede recuperar el valor que estableció la primera clase.
fuente
Mage::register()
persisten solo para esa solicitud. Si desea almacenar datos específicos del usuario, debe usar la sesión, el registro está realmente diseñado para hacer que los datos sean portátiles entre clases.getSingleton()
método de laMage
clase, en realidad almacena los datos en el registro.El registro se almacena en la memoria y es por solicitud HTTP, por lo que no puede compartir datos entre diferentes solicitudes o usuarios.
fuente
Registro de Magento almacenado en la memoria de la aplicación .
cada vez que se ejecuta su script, lo que haya almacenado en el registro desaparece, por lo que no hay necesidad de preocuparse por borrarlo (a menos que el script que está ejecutando esté almacenando objetos grandes en el registro y esté pasando por un montón de datos).
En tal caso, debe cancelar el registro de sus entradas cuando haya terminado con ellas.
El Registro es solo una propiedad estática de la clase Mage. ver para más detalles
pero aun así no pude encontrar una buena explicación
2) para cada usuario habrá un registro separado por solicitud en el servidor.
espero que esto te aclare un poco
fuente