session magento session-management

session - ¿Cuál es la diferencia entre los diferentes tipos de sesión de Magento?



session-management (1)

Estoy buscando información sobre la diferencia de los diferentes tipos de sesión disponibles en 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?


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 pretendes 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 instanciación. El patrón de búsqueda a usar es getSingleton (''core / session'') (o cualquier 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 $_SESSION superglobal.

Entonces, las sesiones nunca se "matan", pero los datos se borran dependiendo de la implementación. El que hace esto notoriamente es el proceso de checkout/session , ya que los datos se borran después de que se realiza un pedido.

Más allá de esto, puede confiar en que la sesión está ahí 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:

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

Por lo tanto, si desea que su módulo tenga su propio espacio de nombre de sesión, simplemente declare que un modelo de sesión 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 sesión; para el núcleo esto sería:

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

podría ser representado como

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