Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 什么';这是不同Magento会话类型之间的区别_Session_Magento_Session Management - Fatal编程技术网

Session 什么';这是不同Magento会话类型之间的区别

Session 什么';这是不同Magento会话类型之间的区别,session,magento,session-management,Session,Magento,Session Management,我正在寻找有关Magento中可用的不同会话类型的差异的一些信息 有一个核心会话、一个客户会话和一个结帐会话。但我不太确定什么时候使用哪一种,以及它们的行为会有什么不同。它们是同时有效还是签出会话比核心会话更早失效?好问题 直接回答这个问题:所有会话模型的生存期都是相同的。会话生存期由Magento和服务器软件中的配置决定您可能想问的问题(以Magento处理各种会话的方式)是,“给定会话类型的数据保留多长时间?” 答案是实现,所以最好的方法是在代码中搜索实例化点。要使用的搜索模式是getSin

我正在寻找有关Magento中可用的不同会话类型的差异的一些信息

有一个核心会话、一个客户会话和一个结帐会话。但我不太确定什么时候使用哪一种,以及它们的行为会有什么不同。它们是同时有效还是签出会话比核心会话更早失效?

好问题

直接回答这个问题:所有会话模型的生存期都是相同的。会话生存期由Magento和服务器软件中的配置决定您可能想问的问题(以Magento处理各种会话的方式)是,“给定会话类型的数据保留多长时间?”

答案是实现,所以最好的方法是在代码中搜索实例化点。要使用的搜索模式是getSingleton('core/session')(或任何会话模型)。调用该名称的任何位置(如果是第一次遇到该名称),都将在
$\u会话
超全局中创建会话名称空间(如下所述)

因此,会话永远不会被“杀死”,但数据会根据实现而被清除。众所周知,这样做的是
签出/会话
,因为下单后数据会被擦除

除此之外,您还可以依靠会话满足您的持久性需求

Magento中的会话模型使用抽象基类定义各种API,
Mage\u Core\u Model\u Session\u abstract
。此类用于填充以下角色/功能:

  • 通过
    init()
    方法设置会话名称空间,将
    $\u会话[$namespace]
  • 会话相关配置设置(包括cookie生存期、SID、安全设置等)的(连接到)getter
  • 闪存消息存储和检索(
    addError()
    addMessage()
    addNotice()
    ,以及
    addSuccess()
  • 会话存储配置和方法的Getter
  • 通过
    Varien\u对象::\uu call()
    随意设置参数的重载(神奇的getter和setter)*请注意,会话有一个修改的magic getter,它允许您从会话中检索数据并通过一次调用将其取消设置(例如,
    $session->getSomeParam(true)
  • 因此,如果希望模块拥有自己的会话名称空间,只需将会话模型声明为从会话抽象扩展而来,并在受保护的
    \u construct()中调用
    $this->init('namespace')

    会话模型的所有数据将在会话名称空间下的数组键中设置;对于core,这将是:

    $session = Mage::getSingleton('core/session')->setSomeValue('Some string');
    
    可以表示为

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

    谢谢你的回复,但那不是我想要的。我的问题与默认情况下Magento中已经存在的不同会话类型更相关。比如核心、客户和结账环节。我想知道它们是否都有相同的生命周期,或者其中一个生命周期是否提前失效?例如,在我看来,结帐会话似乎只在结帐完成之前存在。但我只是猜测,这就是为什么我想知道更多关于它的事。好吧,现在你知道基金会:-)!答案是,这是一个实施的问题。Grep Singleton的核心(“checkout/session”),你会得到一个可以初始化checkout session的所有地方的列表。我调整了我的答案,以真正回答你的问题!谢谢你,伙计!我相信你帮助了我和很多其他人!