Bra*_*don 9 php tracking scalable
我正在开发一个具有可扩展性的我的项目,我已经走到了一个十字路口.在我的网站上,我想检测用户是否在线.我无法想到处理这个问题的最佳方法.我想的方式就是沿着这些方向(在伪代码中):
// SQL user table:
user {
"name": "blah blah",
"email": "derpy@derpyderp.com",
"online": false
}
Run Code Online (Sandbox Code Playgroud)
因此,每当用户登录时,我都可以将其online列更新为true.然而,这最终会导致每次用户登录时发生SQL查询,如果发生这种情况,我会说,每秒10次登录,那就是发生了很多查询.另一种方式我认为我可以做同样的事情,但在另一个表中:
// Activity table:
activity {
"user_id": 2,
"online": true
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我认为由于与user表的分离,这将导致更少的内存消耗.但是我不确定它是否会对性能产生任何实际影响.
所以,如果你能用你的见解祝福我,我会更感激,谢谢你.
一般来说,将列添加到users表以存储lastActivity时间是一种常见做法.用户每次登录或访问页面时,都会将当前时间存储在该字段中.如果您想知道他们是否在线,请查看上次记录的时间是否在某个窗口内 - 例如,五分钟.您可以查询所有行,以查看当前有多少用户在线.
我不会太担心每隔几秒就运行一次查询 - 你的服务器可以处理它(假设它们编写得很好而且不是很冗长).
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |