【问题标题】:Laravel 4.2 ends session when spamming ajax postLaravel 4.2 在向 ajax 发送垃圾邮件时结束会话
【发布时间】:2016-03-18 12:59:07
【问题描述】:

我有一个聊天系统,它通过 ajax 将用户的消息发布到处理数据的控制器。

出于测试目的,如果我按住返回(不断触发发布请求),我最终会点击401 Unauthorized。重新加载页面后,我可以看到我已注销 - 因此导致我意识到此操作已出于某种原因清除了会话。

现在显然在生产中我不允许用户如此快速地触发请求 - 但是,我需要了解为什么会发生这种情况。

任何指导表示赞赏。

【问题讨论】:

    标签: jquery ajax laravel session


    【解决方案1】:

    我怀疑这与https://github.com/laravel/framework/issues/5416#issuecomment-68395469类似的问题

    因为会话读取不尊重文件写入锁,调用 Session::start 的请求恰好在另一个请求中的写入调用位于 ftruncate 和 fwrite 之间的那一刻读取会话文件将收到 NO DATA,因此假设不存在会话并创建一个新会话,因此是新令牌。因为这必须在那个确切的时刻发生,所以它并不总是发生,当许多短请求同时发生时更有可能发生。

    您可以尝试使用与默认 file 不同的会话驱动程序。

    【讨论】:

    • @Capio 是的。尽管如此,我还是更喜欢 redis、elasticache 或 APC 作为驱动程序。它们往往比文件驱动程序更好。
    • 切换到 Redis,很高兴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2016-10-10
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多