Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用AJAX自动刷新对web应用上的会话进行超时的方法_Php_Jquery_Ajax_Session - Fatal编程技术网

Php 使用AJAX自动刷新对web应用上的会话进行超时的方法

Php 使用AJAX自动刷新对web应用上的会话进行超时的方法,php,jquery,ajax,session,Php,Jquery,Ajax,Session,我正在编写一个web应用程序,它以设定的时间间隔通过AJAX调用自动刷新数据 因为这样做,服务器端用户会话永远不会超时,因为每次ajax调用都会刷新最后一个活动 是否有好的客户端规则,我可以实现超时用户?例如,我应该跟踪浏览器中的鼠标移动等,还是应该将AJAX调用指向不刷新会话的URL 我喜欢我的AJAX调用命中一个支持会话的URL,因为我还可以验证用户是否登录,等等 关于我是否应该为用户计时,有什么想法吗?我会提示用户在一段时间不活动后,通过JavaScript验证他们是否仍然处于活动状态。不

我正在编写一个web应用程序,它以设定的时间间隔通过AJAX调用自动刷新数据

因为这样做,服务器端用户会话永远不会超时,因为每次ajax调用都会刷新最后一个活动

是否有好的客户端规则,我可以实现超时用户?例如,我应该跟踪浏览器中的鼠标移动等,还是应该将AJAX调用指向不刷新会话的URL

我喜欢我的AJAX调用命中一个支持会话的URL,因为我还可以验证用户是否登录,等等


关于我是否应该为用户计时,有什么想法吗?

我会提示用户在一段时间不活动后,通过JavaScript验证他们是否仍然处于活动状态。不活动被定义为“不向窗口发送鼠标或按键消息”。如果他们在一段时间后没有响应提示,我将重定向到注销页面


可以找到我的基于jQuery UI的实现。

我通过在浏览器中维护“最后一个操作”时间戳并将其与心跳信号一起发送回服务器来实现这一点。然后在服务器上,我根据该值和当前时间之间的差异检查超时,如果用户空闲时间过长,则调用注销例程。如果会话超时,则heartbeat result将触发浏览器重新加载页面,当会话现在在服务器上注销时,该页面将清除任何用户特定的信息


使用这种方法我必须解决的两个主要问题是,在服务器和客户端日期函数实现中对时区的不同解释,以及如果用户在同一浏览器中打开多个选项卡发送不同的“最后一个操作”,则跟踪最新的操作时间戳返回到服务器。

我使用过一种技术:每次调用时增加AJAX调用之间的间隔。因此,您在10秒后进行第一次AJAX调用,然后等待11秒,然后等待13秒,然后等待16秒、20秒、25秒等等。。。(或类似的模式)。每次有页面活动(通过注册一些JS事件发现),您都会将间隔重置回起始值(例如10秒)


当AJAX间隔超过超时时间时,这种技术将导致暂时不接触浏览器的用户最终超时。作为额外的好处,您可以减少服务器负载——如果用户长时间打开浏览器窗口,他们在超时之前发出的请求会越来越少。

一般来说,您的问题应该超过5个字。这很酷,我也在写一个!对不起,我点击了return,这个问题不小心被贴出来了。我一定会喜欢的。是的,花生画廊会在几秒钟内找到你。我觉得自己像个白痴,这就是我不小心按下回车键,以为它会让我进入一个新标签的结果。我喜欢这个策略。我想我将把它作为你的方法和肯·布朗宁的方法的混合体来实现。我喜欢他弹出一个“嘿,你在干什么”类型的对话。谢谢我喜欢你的主意。正如公认的答案中提到的,我很可能会将您的方法与kevingessner的方法相结合。Ken,有没有办法仍然访问该代码?URL已断开。