codeigniter 2.1.4 阻塞会话和 ajax 中的旧代码库


Old codebase in codeigniter 2.1.4 blocking sessions & ajax

我的会话工作正常,我有一个使用 TankAuth 的复杂自定义用户权限系统。 我从一个小项目开始这个项目,它已经变成了可怕的东西。 大部分数据是通过javascript前端异步获取的。 它现在基本上是一个API,有一些例外。

我的问题是关于会议。 我知道 CI 3(或某处的更高版本)更改了会话库,以允许多个 ajax 调用不会相互阻塞。 我注意到,在运行多个 ajax 请求时,我的应用程序在延迟时间后一起获取所有结果。 我确信这是由于会话被阻止,但由于安全问题,我对尝试修复持谨慎态度。

如何在不危及安全风险的情况下阻止来自会话的 ajax 调用相互阻止?

首先,我相信你用"块"这个词来表示两件不同的事情......

这里:

我知道 CI 3(或某处的更高版本)更改了会话库,以允许多个 ajax 调用不会相互阻塞。

在这里:

我注意到,在运行多个 ajax 请求时,我的应用程序在延迟时间后一起获取。我确信这是由于会话被阻止


CodeIgniter 3 不仅更改了会话库 - 它用一个全新的库替换了它,其中一个原因是多个请求不会相互干扰(第一个引号)。

但是,实现这一目标的方法是使用锁定(或者在第二个引号和您的问题中称为"阻塞")。你无法避免这一点。

您可以做的是,一旦请求不再需要修改$_SESSION数组,就立即调用session_write_close() - 这将释放锁并关闭当前请求的会话,但仍保留$_SESSION内容以供读取。