2014-04-02 84 views
0

在我的网站上,当用户登录时,每20秒约有一个AJAX请求,所请求的PHP正在使用sesssion(从session_start开始)。Ajax请求不更新会话?

我认为打开网站+“无限”的ajax请求应该保持登录的用户登录。

但是,我收到了我的一位用户的回应,他在很长一段时间后被注销 - 这怎么可能?请求的PHP不是分别请求PHP更新会话吗?

什么可能导致这些登录?

在此先感谢。

+0

为什么不只是增加你的会话超时? – Steve

+0

在我看来,这似乎是单个最终用户问题。请重现并分享此问题。 – blue

+0

它可能是一个JavaScript错误,停止Ajax请求,因此不续约会话,使其过期?这取决于你的网站的环境。我想你应该提供进一步的信息。关于。是否还有更多请求/操作正在进行? – Thomas

回答

1

尝试把这样的事情在你的头

<?php 
ini_set('session.gc_maxlifetime', 60 * 60); //ini_set('session.gc_maxlifetime', Mulpitplyer*Seconds); 
session_start(); 
?> 

会话还可以丢弃如果用户有一种“不稳定的”网络连接如

+0

所以你认为这是垃圾收集器造成的?如果是这样,24 * 60 * 60(至少需要1天)是我的设置?当我没有访问PHP.ini时,我在哪里设置?顺便说一句:如果有更多的用户,这会如何影响性能? –

+0

如果你没有访问你的php.ini,那么在php代码中设置它,就像我上面所做的那样,只要将它改为ini_set('session.gc_maxlifetime',24 * 60 * 60);尽管在我的经验中,它是一个不稳定的互联网连接 – Pwner

+0

有没有修复与战场不稳定的in.conn? –

1

this post,这可能是因为浏览器的缓存AJAX请求可以通过在您的请求之前包含$.ajaxSetup({ cache: false })呼叫来解决。

+0

不错的提示,但我不认为这是造成我的问题。不管怎么说,还是要谢谢你 –