CakePHP(或者仅仅是PHP)获取会话持续时间


CakePHP (or just PHP) get session duration

是否有办法获得用户会话的持续时间?

如果用户登录,我可以节省初始时间。如果他退出,我可以得到最后的时间,并计算会话的持续时间。

如果用户没有注销而会话刚刚过期怎么办?有没有办法知道这种情况是否/何时发生?

没有办法知道会话是否仍然处于活动状态,因此您可以做的最好的事情是在数据库中保存SESSION_START_TIME,并在每个请求日志中保存LAST_REQUEST_TIME

这样你就知道什么时候开始和"可能"结束会话。

你也可以知道现在有多少活动会话,通过检查LAST_REQUEST_TIME<5minutes的所有会话…所以这是一个不错的解决方案。

没有。HTTP会话较少。真正想要更细致地了解活跃用户的人会经常使用某种心跳技术,这种技术可以创建持久连接或通过轮询模拟持久连接,使用ajax、flash电影或websockets。

PHP会话实际上更多的是一种机制,用于将一些临时服务器端存储与特定的客户端/浏览器实例链接起来,尽管有些人可能会从名称中读到一些暗示。