我的CodeIgniter应用程序使用会话库并将数据保存到数据库.
我遇到了一些问题,在某个ajax调用之后会创建空白会话.
经过调查,似乎有2个同时发生的函数调用需要进行会话验证.一个人会失败而另一个会没事的.
我能够通过不让它们同时发射来解决这个问题.但我仍然不明白原因为什么它会失败.是否与一次更新用户cookie和第二次呼叫失效有关?或者也许在阅读数据库时它会以某种方式死掉?
我稍微查看了Session核心类,但没有发现任何线索.
如果有任何人遇到同样的问题,我会感激任何关于如何调试或原因是什么的建议.
谢谢!
编辑:
我原本说有408状态回归.这是一个无关的案例.
这是并行触发MyVar.refresh()的函数:
function (event)
{
var self$ = this.a$;
var uid = this.b$.val();
var tid = this.c$.val();
var jqxhr = $.post('/controller1/index',{'uid':uid,'tid':tid,'action':true},function(re)
{
if(re.message != 'success')
{
MyVar.alert('<span class="msg_error sprite"></span>' + re.error);
MyVar.refresh();
}
},'json');
MyVar.refresh();
return stopDefault(event);
};
Run Code Online (Sandbox Code Playgroud)
可能的解决方案:
发现这个:http://codeigniter.com/forums/viewthread/102456/
显然它与ajax不能很好地配合.一种解决方案是,如果是ajax调用,则禁止会话更新; 唯一的问题是我们的网站大多是用ajax构建的..
另外,只是将sess_time_to_update降低到非常频繁的状态,并且ajax做得很好.还做了浏览器刷新,它没有超时.不确定为什么会话ID在ajax调用时已经更改,并且浏览器cookie从未更新过.