zoukankan      html  css  js  c++  java
  • 总结最近游戏中活动出现被刷问题。

    问题:

    活动描述:有一个签到活动,就是用户每天只能签到一次, 签到后并发放奖励,就是因为会发放奖励

    所以导致活动,有好多人开挂来刷这个活动,导致有些人,一天领取多个奖励的现象,

    php代码逻辑:部门一个同事php代码逻辑是这样的,签到用redis来记录是否签到,签到成功就发奖励

    逻辑顺序是:先判断是否满足签到条件,然后发奖再签到。

    解决:

    redis排查:直接用php代码模拟测试出问题所在,发现很怪异,redis对象能new成功,但是一执行connect

    方法时就出现对象不存在的现象,而且不抛出异常,php代码不抛出错误,问题是redis负载的问题,导致连

    接数被占满所致,解决方法就是,增加redis机器,并增加监控,重启原有的redis,redis出问题,估计是被刷

    所致。

    php代码逻辑排查:发现逻辑顺序有问题,应当是先要签到然后在发奖,这样才能防止住并发,这里可以用两个

    概念来解释一下,被刷的代码采用的是乐观锁说机制,我们redis就相当于锁了,不是在代码一执行就开始锁住

    而是把代码看的太乐观了,后来改成了悲观锁机制,问题就得到了解决,一开始就锁住,然后就去执行下面发奖

    流程,这样的就不会多发了。

  • 相关阅读:
    bzoj3996
    bzoj3157 3516
    bzoj1937
    bzoj1532
    bzoj3572
    bzoj1453
    bzoj3205
    bzoj2595
    关于高斯消元解决xor问题的总结
    linux查找和替换命令
  • 原文地址:https://www.cnblogs.com/php5/p/4224023.html
Copyright © 2011-2022 走看看