gpt4 book ai didi

Laravel 5.1 随机丢弃 session 数据

转载 作者:行者123 更新时间:2023-12-04 15:32:33 25 4
gpt4 key购买 nike

我有一个 Laravel 5.1 应用程序的奇怪问题。

间歇性地,它正在丢弃 session 数据。我通过编写一些中间件来检测到这一点,该中间件将该请求的 session 内容写入日志文件。虽然 session ID ( Session::getId() ) 没有改变,但 _token 的值在使用 Session::all() 检索的 session 数据中做。

正如我所说,这种情况间歇性发生。我可以多次刷新同一个URL,然后随机刷新一次 session 数据就没了,_token值与之前的请求不同。

什么会导致这种情况?我也注意到了 flash对象不在“丢弃的” session 数据中。

下面是日志的一个片段。可以看到session_data的内容 key 在最后两行中随机改变“形状”,但 session ID 保持不变。

另外,不确定它是否相关,但我有 DebugBar启用。

Screen-shot

更新:通过调试,我发现在某些页面加载时 session 完全为空,例如,no _token (因此生成了一个新的)。没有。

最佳答案

  • 如果您使用文件驱动程序,您可能会遇到并发请求的竞争条件。然后文件被截断,Laravel 无法读取它,因此它会刷新 session 。竞争条件也可能导致您在 session 中放置的东西没有放置的症状。这往往是随机的,因此很难调试。根据 Laravel 团队的说法,这是文件驱动程序的已知限制,并且似乎没有得到修复,因此我建议使用不同的驱动程序。这将解决您的随机 session 刷新问题,但它仍然引入了对未添加的 session 进行更改的可能性。据我所知,在 Laravel 5.1 的这一点上,你必须自己管理。
  • 不知何故,您的 session 数据太长并被截断。如果您正在使用数据库驱动程序(尚未测试其他驱动程序),并且您尝试保存比字段长度更长的 session 数据,那么后续请求将无法从此 session 中拉取,您将陷入困境开始新的 session 。如果此问题是在 session 数据非常短的情况下随机发生的,则可能是上面列出的原因。
  • 关于Laravel 5.1 随机丢弃 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088764/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com