我的 PHP Web 应用程序中有一个基于文件的会话机制。我想弄清楚用户是在线、空闲还是注销。目前我有两种解决方案,但不知道哪个更好。另外我不知道是否有比这两个更好的替代方法。我的主要观点是,我不想在数据库中存储会话,所以我想要一个使用文件基础会话的解决方案。
解决方案 1:我根据唯一的 user_id 创建会话文件,然后每次用户执行某项操作时,我都会更新会话上的时间戳,然后导致会话文件再次更新/写入磁盘。当我想知道一个用户是否在线时,我使用他的 user_id 读取会话文件的最后一个时间戳,如果小于 5 分钟,我假设他在线,如果超过 5 分钟且小于 10 分钟,我假设他是闲置,除此之外我认为用户已经退出。
解决方案 2:我通过在用户表中有一个 last_login 字段来做同样的事情,每次用户在网站上执行某些操作或查看某些页面时,我都会使用最新的时间戳更新该字段,现在如果我想看到该用户在线,我只是检查他的 last_login 时间戳,看看他的时间是否适合我在解决方案 1 中解释的在线、空闲或注销状态
所以我的问题是,哪一个会更快,开销更少。我的网站有 5000 个会员,每天大概有 700 到 1200 个登录会员。我有一个 VPS,但很快就会转移到专用服务器。那么除了这两个解决方案之外还有什么建议吗?你选择哪一个?
非常感谢你们!