会话没有在Yii中被清除

时间:2013-10-20 12:56:55

标签: php session yii

我有一个奇怪的问题。我在Yii中构建了一个Web应用程序。

每当我从应用程序注销时,用户都会返回主页。但是,如果我刷新页面。用户再次登录。

这是配置文件

'session' => array(
       'class'=>'CDbHttpSession',
        'timeout'=>$params['session_timeout'],
        'autoStart'=>true,
    ),

这是我的退出代码

    Yii::app()->session->clear();
    Yii::app()->session->destroy();
    Yii::app()->cache->flush();
    Yii::app()->user->logout();

最近我发现运行时文件夹中有一个名为session-1.1.8的文件。注销时不会删除它。如果我手动删除它,那么用户将永久注销。

所以我的问题是

1)我在这里做错了吗?

2)这个“session-1.1.8”文件是什么?

3)如何永久退出?

2 个答案:

答案 0 :(得分:1)

来自Yii docs:

  

默认情况下,它将使用名为的SQLite3数据库   应用程序运行时目录下的'session-YiiVersion.db'。您   也可以指定connectionID,以便它使用数据库应用程序   用于访问数据库的组件。

这是文件来自,尝试使用您自己的db组件,这应该修复。

Yii::app()->user->logout();已调用Yii::app()->getSession()->destroy();,因此您无需手动执行此操作。

答案 1 :(得分:0)

我使用这套装置并且非常好:

'cache'=>array(
   'class' => 'CFileCache', 
),

'session' => array(
   'class' => 'CDbHttpSession',
   'timeout' => 60*60*24*30*12*5, 
),  
  

60 * 60 * 24 * 30 * 12 * 5 = 60秒,60分钟,24小时,30天,12个星期五,5年