Example #1
0
 public function buying()
 {
     //设置抢购规则
     //抢购时间为20分钟,到时不能再抢购
     //抢购数量为1000,抢完不能再抢购
     //给用户随机分配一个数字,最后是否抢购成功就看这个数是否是6的倍数
     $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
     $mem = MyRedis::connect($ip);
     $surplus = $mem->get('buying_goods_num');
     //是否已经过了抢购时间
     if ($surplus !== false) {
         //是否已经被抢光了
         if ($surplus > 0) {
             //判断之前是否已经抢购了
             // $uid = LuS::get( 'uid' );
             $uid = mt_rand(1, 100000);
             //测试随机生成一个uid,正式使用时请使用正确的uid
             $is_exists = $mem->sismember('buying_user', $uid);
             //判断是否已经抢购到了
             if (!$is_exists) {
                 $number = $this->getrand();
                 if ($number == 2) {
                     $mem->decr('buying_goods_num');
                     $mem->sadd('buying_user', $uid);
                     //抢购成功
                     $url = url('rand', 'rand::successbuying');
                     header('Location:' . $url);
                     throw new Exception('exit');
                 }
             } else {
                 //已经抢购成功
                 $url = url('rand', 'rand::successbuying', 1);
                 header('Location:' . $url);
                 throw new Exception('exit');
             }
         } else {
             //数量被抢购一空
             $url = url('rand', 'rand::nonumbuying');
             header('Location:' . $url);
             throw new Exception('exit');
         }
     } else {
         //已经过了抢购时间
         $url = url('rand', 'rand::notimebuying');
         header('Location:' . $url);
         throw new Exception('exit');
     }
 }