Php Laravel 4.1-多个ajax请求导致会话持久性失败

Php Laravel 4.1-多个ajax请求导致会话持久性失败,php,ajax,session,laravel,laravel-4,Php,Ajax,Session,Laravel,Laravel 4,我有一个页面,它使两个ajax请求由同一事件触发,因此它们将几乎同步触发 这会导致Laravel 4.1出现一些问题。似乎ajax调用的每个请求都试图重写会话(我正在使用文件驱动程序),结果是编写了一个新会话,留下两个会话文件,最新的一个就是使用的那个。此最新版本没有会话数据,因此我的用户已注销 通过观察存储文件夹,似乎每个http请求都会删除当前会话,然后重写一个新的会话文件。只要在重写会话之前没有另一个http请求,就可以了。如果快速连续出现另一个请求(例如,在同一事件中从同一页面触发两个a

我有一个页面,它使两个ajax请求由同一事件触发,因此它们将几乎同步触发

这会导致Laravel 4.1出现一些问题。似乎ajax调用的每个请求都试图重写会话(我正在使用文件驱动程序),结果是编写了一个新会话,留下两个会话文件,最新的一个就是使用的那个。此最新版本没有会话数据,因此我的用户已注销

通过观察存储文件夹,似乎每个http请求都会删除当前会话,然后重写一个新的会话文件。只要在重写会话之前没有另一个http请求,就可以了。如果快速连续出现另一个请求(例如,在同一事件中从同一页面触发两个ajax调用),则会话将中断。我假设这是因为第二次调用查找要持久化的会话数据,但没有找到

我还尝试了memcached和cookie驱动程序,我遇到了与文件驱动程序相同的问题。 我也尝试过使用“return-response::json(…)”,这是我在论坛其他地方找到的建议解决方案,但没有乐趣


有什么建议吗?我没有找到任何像样的解决办法。当然,Laravel必须有一种方法来处理快速连续的请求并持久化会话?

您应该将
$.ajax
async:false
选项结合使用。这将导致第二个ajax在触发之前等待第一个ajax请求响应返回。使用
setTimeout
时,如果第一次请求延迟导致连接问题,则会出现问题


您可以查看

中完整的$.ajax文档,该文档从未遇到过向服务器发出高频请求的问题(使用大量ajax调用构建一个L4应用程序)。apache服务器为每个请求创建一个新进程(并行)。我不知道它是如何处理IO操作的,但我认为它在文件上使用锁状态来防止竞争条件。写入时锁定,完成时解锁。也希望使用该文件的请求(进程)将等待,直到解除锁定。因此,我认为问题在于其他方面。当您在事件中为第二个ajax请求添加延迟时,它会起作用吗<代码>设置超时(函数(){your_ajax_call},500)@Sven-yep,当我添加延迟时,问题就消失了。每次重新加载都会重写会话文件。会话文件在请求时销毁,然后在响应时重新生成。对于laravel会话来说,这是正确的行为吗?那么您至少有一个解决方法;)我不知道Laravel会话过程,因此无法在这方面帮助您..您可以从中查看完整的$.ajax文档