【问题标题】:Laravel with different session lifetimes具有不同会话生命周期的 Laravel
【发布时间】:2018-02-15 22:02:24
【问题描述】:

问:如何在 Laravel 5 中创建不同生命周期的会话?

此问题与this question 不重复。我不想将它用于任何类型的登录或注册。我只想将其存储 5 分钟,因为获取此数据的调用位于不同的服务器上,并且需要一段时间才能获取。

问题是我有另一个会话需要存储更长时间,并且当前使用此会话的全局配置:

/*
|---------------------------------
| Session Lifetime
|---------------------------------
*/

'lifetime' => 30,
'expire_on_close' => true,

我怎样才能给他们不同的生命?谢谢!

【问题讨论】:

  • 如果获取其他用户也可以使用的资源很慢,那么您应该缓存它而不是将其存储在会话中。 (对于这种情况,缓存实际上是一种合理的解决方案)。使用会话取决于用户的会话 cookie。一旦它消失了,它就消失了。
  • 嗨apokryfos,感谢您的回复!这听起来很合理。但它实际上需要每分钟更新一次,但我的恩典是 5 分钟,以避免在 5 分钟内延迟调用相同的东西,但也需要显示正确的数据。它必须更新电视节目的进度条。请指教?
  • 首先阅读Laravel caching,它将让您深入了解可以做什么。您仍然可以使用用户的 session()->getId() 作为缓存键的一部分,或者如果您希望基于每个用户进行操作,则可以将其用作缓存标记。
  • 它不需要基于每个用户。我读到了缓存,所以我可以用cache(['key' => 'value'], $minutes); 保存并用$value = cache('key'); 获取吗?就这样?
  • 我通常做的是$value = Cache::remember('key',$minutes, function () { /* get and return the value if it's not in the cache */ }); 这在Retrieve & Store 部分中提到,这是一个简单的方便。如果它存在,它将从缓存中获取值,否则它将调用函数将结果存储在缓存中,然后返回值。

标签: php laravel session laravel-5 laravel-5.4


【解决方案1】:

对于您的特定情况,您应该改用缓存。我一般会:

$value = Cache::remember('key', now()->addMinutes(5), function () { 
    /* get and return the value if it's not in the cache */ 
});

remember 是一种方便的方法,可以从缓存中获取值或运行回调,将结果放入缓存并返回结果(意味着下一次调用只会命中缓存)。

更多信息可以在Retrieve & Store下的文档中找到

【讨论】:

  • 谢谢老兄!如果不是基于每个用户,效果很好,在我的情况下是完美的! :)
猜你喜欢
  • 2017-03-08
  • 2016-11-21
  • 2014-08-10
  • 1970-01-01
  • 2018-08-29
  • 2017-11-08
  • 2014-08-16
  • 1970-01-01
  • 2011-08-21
相关资源
最近更新 更多