那么就是加载页面的时候判断对方今日有没有抽过,如果抽过了那么就用if语句来不执行抽奖代码。其实里面还有很多的细节问题,你说让贴出代码,我不愿意抄别人的东西,同时网上给的代码好用的很少。
你要是想做一个有个性的功能还是要自己写的或者修改,不知道你对JS了解多少也没法说。我说的就是大概的思路。
样式千万种,你找到一个你觉得方便而且能达到你目的的同时针对自己的知识的吧。其实不论那种方式都是要用到AJAX的用来确认已经抽过。
你是要一条语句把奖品id为1和2的都显示出来吧?select 抽奖编号 from 表名 where 奖品id=1
union all
select 抽奖编号 from 表名 where 奖品id=2
首先从数据库mysql查询出有奖项6个的唯一编号作为兑奖号:sql1:
$sql="select 唯一编号 from table where status=0";
得到数组$real=array('001','002','003','004','005','006',)其中001,002就是唯一编号
然后生成94个空奖
$empty=array('','',...,'',)
最后把数组合并,得到一个全新的数组。
$arr = array_merge($real, $empty)
用户随机在数组中抽取一项
$rand= mt_rand(0, count($arr)-1)
比如$rand抽到了001
if(''!=$rand){
//表示抽中,修改数据状态,这里需要 *** 作数据库
sql2:
$sql="update table set status=1 where 唯一编号=001";
*** 作完成
}else{
//表示没有抽中,不做 *** 作。
}
现在的问题是当100人同时进入抽奖,在红色部分sql2,还没有来的急修改状态的情况下,sql1继续会把001作为没有抽中的奖项,来让其他用户继续抽,这样有可能001再次被抽到。
想请大家帮助php高并发下抽奖程序,如何避免重复中奖及多人抽中同一个奖?
或者从别的思路出发考虑抽奖程序。
并发 php 抽奖
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)