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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 12

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

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

3年前 评论

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

3年前 评论

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

3年前 评论

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

3年前 评论

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

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

3年前 评论

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

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

3年前 评论
颠倒的玉石

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

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

在线时长看统计的精准度

3年前 评论

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

3年前 评论

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

3年前 评论
GDDD

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

3年前 评论