Ответ 1
Отличный вопрос!
Чтобы ответить на вопрос напрямую: все время жизни сеансов одинаково. Срок службы сеанса определяется настройкой в Magento и в вашем серверном программном обеспечении. То, что вы, вероятно, собираетесь задать (в способе Magento для обработки различных сеансов): "Как долго сохраняются данные для определенного типа сеанса?"
Ответ является одним из вариантов реализации, поэтому наилучшим способом является поиск кода для точек создания. Используемый шаблон поиска - getSingleton ('core/session') (или любая модель сеанса). В любом случае, если это вызвано - если он впервые встречается, - создаст пространство имен сеанса (объяснено ниже) в супергалоне $_SESSION
.
Итак, сеансы никогда не "убиты", но данные очищаются в зависимости от реализации. Тот, который делает это, как известно, checkout/session
, поскольку данные стираются после размещения заказа.
Помимо этого, вы можете полагаться на то, что этот сеанс существует для ваших потребностей в персистентности.
Модели сеансов в Magento используют абстрактный базовый класс для определения API-типов, Mage_Core_Model_Session_Abstract
. Этот класс заполняет следующие роли/функции:
- Распределение имен сеансов с помощью метода
init()
, буквально разделяющего сохраненные значения для каждого типа в$_SESSION[$namespace]
- Getters для подключения к настройкам конфигурации, связанным с сеансом (включая время жизни файлов cookie, SID, параметры безопасности и т.д.).
- Сохранение и извлечение флеш-сообщений (
addError()
,addMessage()
,addNotice()
иaddSuccess()
) - Getter для конфигурации и методов хранения сеанса.
- Перегрузка (магические геттеры и сеттеры) для установки параметров по желанию через
Varien_Object::__call()
. * Обратите внимание, что сеансы имеют модифицированный магический приемник, который позволяет извлекать нулевую точку из сеанса и отключать ее одним вызовом (например,$session->getSomeParam(true)
)
Итак, если вы хотите, чтобы ваш модуль имел собственное пространство имен сеанса, просто объявите модель сеанса как продолжение от абстрактного сеанса и в защищенном вызове _construct()
$this->init('namespace')
.
Все данные для моделей сеанса будут установлены в ключах массива в пространстве имен сеанса; для ядра это будет:
$session = Mage::getSingleton('core/session')->setSomeValue('Some string');
может быть представлен как
$_SESSION['core']['some_value'] = 'Some string'