《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
关于 LearnKu
用户在线一天(不足一天按一天算)增加 1 积分建一张表,字段用户id和日期,然后用户请求的时候就判断 如果今天没有该用户id那就积分加一,然后把用户id和日期写入。
心跳,实现方式可以是轮询也可以是
websocket计算用户在线时长,就得用2楼的方案,记录最后活跃时间,并且增加在线时长。不足一天按一天算,就简单了,当天请求过 api 就算。
就一个在线时长写一个socket不值当,前端轮询吧
不满一天按一天算,你这需求其实不就是记录用户最后一次活跃时间吗?做个中间件,用户请求一次接口,把这个用户的 ID 写入到 REDIS,晚上 12 点启动定时任务把 REDIS 数据同步到数据库就完事了,反正都是加 1 积分而已
如果要想精确记录使用时间,就得用埋点事件之类的,参考友盟
可以参考这篇文章 segmentfault.com/a/119000000818865...
你的问题是,如何判断用户一直在线,并且记录用户在线多久
还是,当用户在线一天(你已经通过其他途径获取到了用户在线时长)时,如何给用户增加积分?
不足一天按一天算。。。。。那你每天看他登陆没有不就好了 :joy:,今天登陆了,明天登陆了那就是两天了嘛
在线时长看统计的精准度
结合 @勇敢的心 的文章连接,再考虑0点跨天的极限情况,基本就能实现该功能啦。
第一反应就是 redis bitmaps 之前签到就是用这个搞的,不过后面同事搞不了,就改成数据库了...
计算用户的在线时长?那你就得先实现 判断活跃 的规则,写个心跳接口,里面判断活跃,累积时长。心跳可以用websocket实现。也可以用轮询,实现起来简单,但是用户量上来了,严重影响性能。