Nic*_*ery 11 php ajax codeigniter
我的应用程序是一个完整的AJAX网页,使用Codeigniter Framework和memcached会话处理程序.
有时,它会发送大量异步调用,如果会话必须重新生成其ID(以避免会话固定安全问题),会话cookie的更新速度不够快,而且由于会话ID过期,某些AJAX调用失败.
我走过了类似的线程(例如这个),但答案并没有真正解决我的问题,我无法禁用安全性,因为我的应用程序中只有AJAX调用.
尽管如此,我有一个想法,我希望在入侵Codeigniter会话处理程序类之前有一个意见:想法是管理2个同时会话ID一段时间,例如30秒.这将是最大请求执行时间.因此,在会话重新生成后,服务器仍将接受先前的会话ID,并切换到新的会话.使用相同的图片,如下所示:
您的问题似乎与请求的实际速度无关(尽管这是一个影响因素),但与并发性有关。如果我理解正确,您的 javascript 应用程序会进行许多(异步)ajax 调用 - 快速(可能是突发) - 有时其中一些会由于您认为是请求速度问题而导致会话失效而失败。好吧,我认为问题在于您实际上对服务器有多个并发请求,而第一个请求的会话已更新,另一个请求基本上看不到它,因为请求已经发出并等待服务器处理。
当然,只有当同时为同一用户发出多个请求时,这个问题才会显现出来。
现在真正的问题是 - 您的应用程序业务逻辑对此有什么要求?
在我看来,您正在尝试寻找“业务”问题的技术解决方案。我的意思是,要么您误解了您的要求,要么这些要求没有经过深思熟虑/指定。
我建议您尝试以下一些方法:
问问自己这些多个同时发生的请求是否可以合并为一个
深入研究需求并尝试找到你所做的事情的真正原因,也许这没有真正的商业原因
每次在触发一系列请求之前,都会触发“刷新”ajax 请求以获取新会话,并且只有在成功后才继续处理所有其他请求
希望我写的一些内容可以帮助指导您解决问题。祝你好运
归档时间: |
|
查看次数: |
951 次 |
最近记录: |