2011-11-26 61 views
1

我将简要说明我打算做什么。客户端不再存在时删除会话

两个人在网页上建立了PHP会话。一个人离开该页面,另一个人仍然在场。 60秒后,离开的人需要终止整个会话(如超时)。

我一直在做的是让每个人登录页面,通过AJAX请求作为ping定时器,并且ping定时器等待,直到断开连接的人的最后ping超过60秒。然后,它可以消除与退出者关联的数据文件,但是我不知道如何删除整个会话,而无需先将当前会话切换到要删除的会话,删除它,然后以某种方式切回。

有没有办法做到这一点?还是比一系列AJAX请求更高效,更少带宽的替代方案?

回答

1

据我所知,当你离开一个网站时,你的会话被垃圾回收器自动销毁,所以这看起来像你不应该担心的事情。

2

除非你有数百万用户留下陈旧的会话文件,否则不要打扰。

如果您需要60秒的超时时间,则将PHP的会话max_lifetime设置为60秒,并将会话垃圾回收器设置为相当频繁地运行。

ini_set('session.gc_maxlifetime', 60); // 60 second lifetime 
ini_set('session.gc_probability', 1); 
ini_set('session_gc.divisor', 100); // garbage collector has 1% chance of running 

与,集电极将自动对传入命中约1%(1/100)运行,并且它会删除还没有在至少60秒被使用的任何会话文件。

+0

那很聪明,很好找!我会在我自己的网站上实现它 –