В чем разница между различными типами сеансов Magento? - PullRequest
23 голосов
/ 21 марта 2012

Я искал некоторую информацию о разнице различных типов сеансов, доступных в Magento.

Это основной сеанс, сеанс клиента и сеанс проверки.Но я не совсем уверен, когда использовать какой из них и как они могут вести себя по-другому.Все ли они действительны в одно и то же время или сеанс проверки отменяется раньше, чем основной сеанс?

1 Ответ

26 голосов
/ 21 марта 2012

Отличный вопрос!

Чтобы ответить на вопрос напрямую: Время жизни всех моделей сессий одинаково. Время жизни сессии определяется конфигурацией в Magento и в программном обеспечении вашего сервера. То, что вы, вероятно, намереваетесь спросить (в способе обработки различных сеансов Magento): «Как долго сохраняются данные для данного типа сеанса?»

Ответ один из следующих:реализации, поэтому лучший способ - поиск кода для точек создания экземпляров.Используемым шаблоном поиска является getSingleton («ядро / сессия») (или любая модель сеанса).Везде, где это вызывается, - если это происходит впервые - создаст пространство имен сеансов (объяснено ниже) в $_SESSION суперглобальном.

Таким образом, сеансы никогда не "убиваются", но данные очищаютсяв зависимости от реализации.Тот, кто делает это, как известно, checkout/session, так как данные стираются после размещения заказа.

Помимо этого, вы можете полагать, что сеанс существует для ваших постоянных потребностей.

Сессиямодели в Magento используют абстрактный базовый класс для определения своего рода API, Mage_Core_Model_Session_Abstract.Этот класс выполняет следующие роли / функции:

  1. Пространство имен сеанса с помощью метода init(), буквально разделяющее сохраненные значения для каждого типа в $_SESSION[$namespace]
  2. Получатели для (подключение к)параметры конфигурации, связанные с сеансом (включая срок действия файлов cookie, SID, параметры безопасности и т. д.)
  3. Хранение и извлечение флэш-сообщений (addError(), addMessage(), addNotice() и addSuccess())
  4. Получатель для конфигурации и методов хранения сеансов
  5. Перегрузка (магические получатели и установщики) для установки параметров по желанию через Varien_Object::__call().* Обратите внимание, что у сеансов есть модифицированный магический метод получения, который позволяет вам извлекать данные из сеанса и сбрасывать их одним вызовом (например, $session->getSomeParam(true))

Итак, если вы хотите, чтобы ваш модуль имел свой собственныйПространство имен сеанса, просто объявите модель сеанса как выходящую из аннотации сеанса и в защищенном _construct() вызове $this->init('namespace').

Все данные для моделей сеанса будут установлены в ключах массива в пространстве имен сеанса;для ядра это будет:

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

может быть представлено как

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