需求:每个产品每个人可无线抢购,产品数量为0时不再抢购
抢购记录表
public function qianggou2()
{
//假定产品数量为10
$count = 10;
$uid = $this->request->param("uid");
$pid = $this->request->param("pid");
if(!$this->redis->exists('qianggou_'.$pid)){
$this->redis->setnx('qianggou_'.$pid,0);
}
if($this->redis->incr('qianggou_'.$pid)>$count){
$this->redis->decr('qianggou_'.$pid);
$ret = ['code'=>'1','msg'=>'已抢完'];
return $ret;
}
try{
$Qianggou = new Qianggou();
$order_no = time().$pid.$uid;
$Qianggou->data([
'uid'=>$uid,
'pid'=>$pid,
'create_time'=>time(),
'order_no'=>$order_no
]);
$res = $Qianggou->save();
} catch (Exception $e){
$this->redis->decr('qianggou_'.$pid);
$ret = ['code'=>'1','msg'=>'抢购失败1'];
return $ret;
}
if(!$res){
$this->redis->decr('qianggou_'.$pid);
$ret = ['code'=>'1','msg'=>'抢购失败2'];
return $ret;
}
$ret = ['code'=>'0','msg'=>'抢购成功'];
return $ret;
}
使用apache自带ab.exe测试
ab -c 1000 -n 1000 "http://b.person.com/index.php/index/Index/qianggou2?uid=80&pid=86"