我的问题如下:以只读模式启动会话
我有一个运行一系列AJAX调用的页面,例如,
$.ajax({ url: "/user/post1" });
$.ajax({ url: "/user/post2" });
$.ajax({ url: "/user/post3" });
...
$.ajax({ url: "/user/postN" });
(我已经事先确定的ID)
我也得到了:
$.ajax({ url: "/user/modifysessiondata" });
现在的问题是,我需要开始在每个会话和每个请求(以获得当前用户)以及“/ user/modifysessiondata”还需要修改会话数据。
但是我发现,如果我只是在一次有可能执行所有的AJAX请求,如果/user/postX
请求之前/user/modifysessiondata
请求开始,之后结束,然后它会保存会话数据,因为它是当请求被称为和因此会覆盖第二个呼叫设置的会话数据。
我的问题是:
是否有可能标志会议提出具体要求开始为“只读”?我需要为此创建一个新的定制StartSession
中间件吗?
我只是在做一件完全荒谬的事情吗?
注意:为了澄清我在谈论Laravel会议。我正在使用支持redis的会话存储。
你确定你没有修改自己的变量?每个请求都应该阻止会话,所以我不会看到一个请求可以保持打开状态,而另一个请求会同时修改会话。您当然可以打开您的会话,复制数组并立即关闭会话,然后在每个脚本的顶部不需要修改它。 – jeroen
您可以等待下一个ajax的调用,直到当前的ajax请求完成。而在阿贾克斯你可以关闭会话,并与'session_write_close()'(在PHP) – Oliver
保存@jeroen我指的是laravel会话。我不确定在请求终止之前是否可以关闭laravel会话。更新澄清。 – apokryfos