【发布时间】:2020-04-18 23:56:16
【问题描述】:
我使用Yii2 sessions 为来宾用户存储会话数据。
在会话期间,@runtime 目录中会生成文件。这些文件以数据库 ID 命名(例如 234.pdf)。
当用户选择某些东西时,选择保存在数据库中,存储在会话中并生成一个文件:
$model->save();
file_put_contents($model->id.".pdf", ...);
Yii::$app->session->set("model_id",$model->id);
当会话到期时,应删除与会话相关的文件。出于统计原因,必须保留数据库内容。
会话到期时如何获得识别?
【问题讨论】:
-
如果您知道上次登录的时间,例如,您可以使用 cron 作业 1d 后删除文件
-
我只是有根本不登录的访客用户。所以附加到登录过程不是有效的选择
-
好吧,决定什么时候可以安全地删除文件。例如。每个午夜或创建文件的一周后...
-
我想说你必须主要使用
session.cookie_lifetime和session.gc_maxlifetime并实现你的会话超时,并且要在Yii中做到这一点你必须首先知道如何在核心php中做到这一点, here 是一本很好的读物,可以帮助您首先了解为什么需要实现自己的会话超时,然后如何做到这一点,这是一个有点宽泛的问题,所以我认为您应该实现,然后如果您卡在某个地方,我们可以调查一下。 -
@MuhammadOmerAslam 我现在明白 Yii2 不支持可以在此处使用的“sesson timeout”等事件。我将不得不不时编写 cronjobs 来清理文件。