Laravel 如何计算用户的在线时长

使用Laravel API,如何计算用户的在线时长?
然后用户在线一天(不足一天按一天算)增加1积分,请问应该如何实现呢?完全没有思路!

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 12

用户在线一天(不足一天按一天算)增加 1 积分

建一张表,字段用户id和日期,然后用户请求的时候就判断 如果今天没有该用户id那就积分加一,然后把用户id和日期写入。

2年前 评论

心跳,实现方式可以是轮询也可以是 websocket

2年前 评论

计算用户在线时长,就得用2楼的方案,记录最后活跃时间,并且增加在线时长。不足一天按一天算,就简单了,当天请求过 api 就算。

2年前 评论

就一个在线时长写一个socket不值当,前端轮询吧

2年前 评论

不满一天按一天算,你这需求其实不就是记录用户最后一次活跃时间吗?
做个中间件,用户请求一次接口,把这个用户的 ID 写入到 REDIS,晚上 12 点启动定时任务把 REDIS 数据同步到数据库就完事了,反正都是加 1 积分而已

如果要想精确记录使用时间,就得用埋点事件之类的,参考友盟

2年前 评论

你的问题是,如何判断用户一直在线,并且记录用户在线多久

还是,当用户在线一天(你已经通过其他途径获取到了用户在线时长)时,如何给用户增加积分?

2年前 评论
颠倒的玉石

不足一天按一天算。。。。。那你每天看他登陆没有不就好了 :joy:,今天登陆了,明天登陆了那就是两天了嘛

2年前 评论
webeditor (楼主) 2年前
颠倒的玉石 (作者) 2年前

在线时长看统计的精准度

2年前 评论

结合 @勇敢的心 的文章连接,再考虑0点跨天的极限情况,基本就能实现该功能啦。

2年前 评论
陈先生

第一反应就是 redis bitmaps 之前签到就是用这个搞的,不过后面同事搞不了,就改成数据库了...

2年前 评论
GDDD

计算用户的在线时长?那你就得先实现 判断活跃 的规则,写个心跳接口,里面判断活跃,累积时长。心跳可以用websocket实现。也可以用轮询,实现起来简单,但是用户量上来了,严重影响性能。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!