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'); } }