PHP+redis+异步到mysql+vue+简单的秒杀

3 篇文章 0 订阅

一、自己练着玩,纯做记录,如对你有帮助,那就更好了。

二、思路

1、前台展示秒杀,可以看到进行中的秒杀、结束的秒杀,也可以创建秒杀。

2、前台创建秒杀,限时10分钟,只有10个商品,秒杀完立即结束,没秒杀完10分钟后结束。秒杀信息存redis。

3、shell轮询,发现结束的秒杀,信息异步到mysql。

三、流程

1、前台

 

 

2、后台

 

 秒杀结束并异步到mysql的,后台才会有详情。

四、部分代码

1、vue计时器

页面:

<el-button type="danger"  >{{djs}}</el-button>

JS:

data() {
            return {
             
              show1:true,
           
            }
        },

created() {

var aaa=600;

var time=setInterval(() =>{
                        aaa--;
                        if(aaa>=60)
                        {
                        
                            var fen=parseInt(aaa/60);//获取分钟,除以60取整数,得到整数分钟
                            miao=parseInt(aaa%60);//获取秒数,秒数取佘,得到整数秒数
                            var result=fen.toString().padStart(2,'0')+"分"+miao.toString().padStart(2,'0')+"秒";
                        }
                        else
                        {
                            var result="0分"+aaa.toString().padStart(2,'0')+"秒";
                        }
                        if(aaa<0)
                        {
                            this.show1=false;
         
                            clearInterval(time);
                              time = null;
                        }
                        else
                        {
                            this.djs = result;
                        }
            },1000);

},

2、PHP 数组序列化存入redis的list中

            $order['seckillid']=$sid;
            $order['ip']=$ip;
            $order['create_time']=time();
            $redis = new Redis(Config::get('cache.stores.redis'));
            $res=$redis->llen("seckill".$sid);
            $num=$res+1;
            $order['name']="U".$num;

          if($res>=10)
            {
                     
                    exit("秒杀只有10个,秒杀结束");
            }
            try{
                 $orderstr=serialize($order);
                 $save=$redis->lPush("seckill".$sid, $orderstr);           
            } catch (\Exception $e) {
                exit("秒杀失败");
            }

 3、PHP 反序列化从redis的list中取出存入数组并转json

       $redis = new Redis(Config::get('cache.stores.redis'));
        $dataString = $redis->lRange("seckill".$id,0,-1);
   
        for($i=0;$i<count($dataString);$i++)
        {
            $data[$i] = unserialize($dataString[$i]);
        }
        $data=json_encode($data,JSON_UNESCAPED_UNICODE);
        echo($data);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值