【发布时间】:2019-01-21 03:12:30
【问题描述】:
我想创建会话,应该在 3 天后将其删除。
我该怎么做?我检查了这里的文件和问题,但一无所获..
-我到底想要什么?
session()->put("suspect",true,strtotime($time_diff))
这可能吗?
【问题讨论】:
-
你想用这个实现什么?是不是更容易使用缓存,并用对应于用户id或会话id的标签存储它?
-
@apokryfos 我正在尝试将一些用户标记为嫌疑人一段时间。我坚持为此创建一个会话价值就足够了。有没有更好的方法来做到这一点?
-
会话是短暂的。如果您要标记的用户已注册,那么这很容易。您可以在数据库中创建一个“flagged_at”列,如果用户在过去 3 天内被标记,则认为他们已被标记。如果您想标记非注册用户,那么这很难(几乎不可能)。困难的部分是知道 2 天后访问您页面的用户与您之前标记的用户相同。
-
@apokryfos 实际上我在数据库中创建了一个
suspended_at列,它检查用户是否怀疑。但是我不想每次都控制它,如果用户已经怀疑,不需要一次又一次地检查。所以我决定创建一个关于它的会话。这是不必要的吗? -
您可以在用户登录时在会话中加载该列的内容。这应该足够了,因此如果用户已经有会话,您不需要在每次请求时都访问您的数据库。但是,您需要实际计算暂停是否对每个请求仍然有效(这是一个简单的数学运算,不应该太耗时)。但是,您的方法应该是会话是数据库的后备存储(如每个用户缓存),因此您不应该依赖会话值存在,如果它根本不存在,您可能需要读取表行.
标签: php laravel session laravel-5.6