将Laravel特定会话变量设置为在一段时间后过期

时间:2019-03-25 16:03:02

标签: php laravel session session-variables

我正在我网站的统计信息页面上工作, 并且我需要将常规会话变量保持为正常时长(例如:120分钟) 但我也想存储一些变量,因此我不必在每次重新加载页面时都执行8个SQL查询 例如,我想保存过去30天的每一天的用户帖子数,但是它经常更改,因此只想保存10分钟 我如何才能仅使会话中的特定变量在10分钟后删除,而使其他变量保持活动状态?

我已经考虑过保存上一次刷新时间,并且每次重新加载检查是否都在10分钟之内

Session::put('lastRefresh',  Carbon::now()->timestamp);

在缓存中,我会做

Cache::put('posts',  $posts, 10);

但是它对每个用户都是唯一的,所以我不能 有时它只是一个很大的数组(90天90个项目) 所以我不能使用cookie:P

只是不知道它是最好还是最有效的方式

1 个答案:

答案 0 :(得分:0)

由于每个用户都是唯一的,因此可以为缓存key命名空间以标识用户:

Cache::put('user_' . auth()->user()->id . '_posts',  $posts, 10);

or

cache(['user_' . auth()->user()->id . '_posts' => $posts], 10);

然后您可以使用:

Cache::get('user_' . auth()->user()->id . '_posts');

or

cache('user_' . auth()->user()->id . '_posts');

注意::如果使用laravel 5.8,缓存过期时间现在是,而不是分钟。