Yii会话和PHP会话是否交叉兼容?

时间:2014-02-23 16:35:30

标签: php session yii amazon-web-services

在Yii中,在查看CWebUser :: logout的源代码时,我注意到他们使用Yii::app()->getSession()->destroy()而不是通常的PHP session_destroy

做了一些研究我看到Yii有一个名为CHttpSession的类,它有自己的方法来存储数据。

这让我想到了 - 它们是否交叉兼容? CHttpSession只是一个不错的包装器吗?或者这是一个全有或全无的过程?

在我的自定义代码中,我一直在使用$_SESSION来完成与会话相关的所有内容。在Yii生成的事物中,我假设它使用CHttpSession。使用它们并将它们混合是一个问题吗?

我现在正在将会话处理转移到AWS DynamoDB(https://github.com/aws/aws-sdk-php/blob/master/docs/feature-dynamodb-session-handler.rst),在添加此附加层之前,我想确保所有内容都兼容。

2 个答案:

答案 0 :(得分:1)

您可以使用基于数据库的会话来恢复该会话。它真的很简单。只需加上

'session' => array( 
                'class'=>'CDbHttpSession', 
                 'connectionID' => 'db' 
),

在config / main.php组件

答案 1 :(得分:0)

CHttpSession是php会话的漂亮OO包装器。底层实现使用php的会话方法。以下是CHttpSession::open()代码的一部分代码:

public function open()
{
    if($this->getUseCustomStorage())
        @session_set_save_handler( array($this,'openSession'),array($this,'closeSession'),array($this,'readSession'),array($this,'writeSession'),array($this,'destroySession'),array($this,'gcSession'));

    @session_start();

对于Yii惯例,请始终使用CHttpSession代替$_SESSION