总结最近游戏中活动出现被刷问题。

问题:

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

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

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

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

解决:

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

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

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

所致。

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

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

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

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

时间: 2024-11-05 16:02:40

总结最近游戏中活动出现被刷问题。的相关文章

游戏中的人工智能(AI)和行为树科普

什么是角色游戏中的AI? 玩游戏的人都知道,有些游戏中的AI实在是弱智的要死.即使是在WOW这样顶级的游戏中,AI也是有限得掉渣,绝大部分NPC都像一个木桩一样,哪怕是精心设计的BOSS也就只有一些战斗AI.尽管有很多人把动画,或者自动寻路之类的功能也叫做AI,但是我们并不讨论这种基本功能.我们讨论的AI是指,可以使得NPC好像一个真人一样活动的AI.拥有这样AI的NPC看起来就不再是那个只有血条和攻击力的模型,而给玩家的感受会是一个有信念.欲望和意图的生命.从更广泛的意义上说,如果整个游戏世界

游戏中的AI算法总结与改进

参考文章: http://games.sina.com.cn/zl/duanpian/2014-03-11/105973.shtml http://www.oschina.net/translate/understanding-steering-behaviors-collision-avoidance?cmp http://blog.csdn.net/ityuany/article/details/5509750 一. 人工智能的定义 人工智能(AI, Artificial Intellige

堆 在游戏中的运用

* 定时器的应用与原理: 游戏中,活动的状态.游戏数据的保存与加载.BOSS刷新时间等等,都可能会用到定时器.而堆对于定时器的实现有着至关重要的作用. 定时器的工作原理其实不难,就是内部保存多个时间及其回调函数,当系统时间达到我们保存的时间值时,就执行回调函数:从而达到定时工作的效果.同时,判断是否达到指定时间时,只需要判断最早的时间(最早的时间没有达到,更晚的时间肯定不会达到),因此需要对时间列表进行排序. 起初,我设想定时器内部用于保存时间的数据结构是列表:理由是容易理解.实现简单,而且删除

Unity 2D游戏开发教程之游戏中精灵的跳跃状态

Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却无法从低的地面移动到高的地面,因为当前的游戏精灵只能左右移动,即left和right.为了解决这个问题,本节就来为精灵添加跳跃状态.   图2-14  精灵从一个地面移动到另一个地面 (1)如果要为精灵添加跳跃状态,即jump,就不得不再引入其它状态: q   landing:用于表示精灵接触到地面

【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!

[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-16 10:08 30803人阅读 评论(18) 收藏 举报 游戏脚本luaanimationpython 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/681.htm

为什么越来越多大学生沉溺于游戏中? ---游戏设计思路

游戏都是针对人性弱点来设计的,所以很多人沉迷 为什么越来越多大学生沉溺于游戏中?  迷踪,整理狂◆文具控◆写作理论爱好者 因为所有游戏的设计都是冲着“人性的弱点”来的. 1.即时反馈 你在游戏中的任何操作,都会立马视觉化.数据化地显示出来. 不要小看每次砍怪物头上飚出的数字,不要小看出招的音效,不要小看伤血的红字和加魔的蓝字,它们都给玩家提供了最最直观即时的反馈. 为什么即时反馈是有效的?因为,即时反馈提供给玩家一种可控感.(有个段子说:电梯里的关门键其实根本无效,但光是这个装饰用的按键却实实在

游戏中的随机--转换思维

文章中的标题是"游戏中的随机--转换思维",有一个关键词是"随机":但是随机这个说法过于笼统,因此我主要说一个具体化实例:随机坐标. 随机坐标在游戏中相当常见,例如掉落.怪物生成.采集生成或者是一些活动中的藏宝地点. 随机出一个坐标不难. 那随机出一个不重复的坐标呢?其实也不难! 还能好好说话吗? 就是要讲述如何做出一个高效及简洁的随机坐标模块! 我知道相当一部分人设计随机坐标模块的思想如下: A.就是从一个大箩筐中,抽乒乓球,每抽出一个乒乓球,只记录其编号,乒乓球

NGUI 3.9.0 Tween实现Toggle点击下拉菜单(游戏中常见的边角主菜单入口)

单机游戏中这个熟悉的按钮,会弹出如下一样的菜单,相信初次看到的,肯定会很惊奇,That's Great!接下来让我告诉大家其中的做法. 1.创建Toggle ,前景图(Background)为,CheckMark 为.(两个为Sprite,从图集中选取,关于如何添加Sprite与制作图集,在这里不做主要叙述了) 2.制作下拉菜单,(1)创建一个Panel作为父容器.(2)在Panel下面添加Sprite,命名为MenuListPanelBkSprite,此为下拉菜单的背景图片.(3)在MenuL

Unity优化方向——在Unity游戏中优化脚本(译)

原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity-games?playlist=44069 介绍 当我们的游戏运行时,我们设备的中央处理器(CPU)执行指令.游戏的每一帧都需要执行数百万的CPU指令.为了保持平滑的帧率,CPU必须在规定的时间内执行指令.当CPU不能及时执行所有指令时,我们的游戏可能会变慢.卡顿. 许多事情会导致CPU有太多的工作