2012-03-21 12 views
23

Estoy buscando información sobre la diferencia de los diferentes tipos de sesión disponibles en Magento.Cuál es la diferencia entre los diferentes tipos de sesión de Magento

Hay una sesión central, una sesión de cliente y una sesión de pago. Pero no estoy seguro de cuándo usar cuál y cómo podrían comportarse de manera diferente. ¿Son todos válidos por el mismo tiempo o se invalida una sesión de pago antes de la sesión principal?

Respuesta

26

¡Gran pregunta!

Para responder la pregunta directamente: Todos los modelos de sesión de por vida son iguales. La duración de la sesión está determinada por la configuración en Magento y en su software de servidor. Lo que probablemente pretendas preguntar (en la forma en que Magento maneja varias sesiones) es "¿Cuánto tiempo permanecen los datos para un tipo de sesión dado?"

La respuesta es una de implementación, por lo que la mejor manera es buscar en el código puntos de creación de instancias. El patrón de búsqueda que se utilizará es getSingleton ('core/session') (o el modelo de sesión). En cualquier lugar que se llame, si es la primera vez que se encuentra, se creará el espacio de nombres de la sesión (explicado a continuación) en el superglobal $_SESSION.

Por lo tanto, las sesiones nunca se "eliminan", pero los datos se borran según la implementación. El que hace esto notoriamente es checkout/session, ya que los datos se borran después de realizar un pedido.

Más allá de esto, puede confiar en que la sesión está allí para sus necesidades de persistencia.

Los modelos de sesión en Magento usan una clase base abstracta para definir una especie de API, Mage_Core_Model_Session_Abstract. Esta clase llena los siguientes roles/funciones:

namespacing
  1. Sesión a través del método init(), literalmente separar valores almacenados para cada tipo bajo $_SESSION[$namespace]
  2. Getters para (conexión a) los valores de configuración relacionados con la sesión (incluyendo duración de la cookie , SID, la configuración de seguridad, etc.)
  3. flash de almacenamiento de mensajes y recuperación (addError(), addMessage(), addNotice(), y addSuccess())
  4. Getter para la sesión de configuración y los métodos de almacenamiento
  5. Sobrecarga (getters y setters mágicos) para configurar parámetros a voluntad a través de Varien_Object::__call(). * Tenga en cuenta que las sesiones tienen un captador magia modificado que le permite recuperar un dato de la sesión y desarmar con una llamada (por ejemplo $session->getSomeParam(true))

lo tanto, si usted quiere que su módulo para tener su propia sesión de espacio de nombres, simplemente declaran un modelo de sesión que se extiende desde el resumen de la sesión y en la llamada _construct() protegida $this->init('namespace').

Todos los datos para los modelos de sesión se establecerán en claves de matriz debajo del espacio de nombres de la sesión; para el núcleo de esto sería:

$session = Mage::getSingleton('core/session')->setSomeValue('Some string'); 

puede ser representada como

$_SESSION['core']['some_value'] = 'Some string' 
+0

Thx por la respuesta, pero eso no era exactamente lo que estaba buscando. Mi pregunta estaba más relacionada con los diferentes tipos de sesión que ya existen en Magento de forma predeterminada. Como la sesión central, de clientes y de pago. Me pregunto si tienen la misma duración o si alguno de ellos se invalida antes. P.ej. la sesión de pago me suena como si solo existiera hasta que se completara el pago. Pero solo estoy adivinando, es por eso que quiero saber más al respecto. – Flo

+0

Bueno, ahora conoces la base :-)! La respuesta es, es una cuestión de implementación. Amplíe el núcleo para * Singleton ('pago/sesión') * y obtendrá una lista de todas las partes de la sesión de pago * podría * inicializarse. – benmarks

+2

¡Ajusté mi respuesta para responder su pregunta! – benmarks

Cuestiones relacionadas