准备事项:
一、2个表
1、PortalTagModel:插入秒杀成功用户的信息。 字段:id,status
2、SetModel:记录开放名额的信息。字段:id,ic。
二、设置产品。
SetModel表,添加数据。id=1,ic=3(3个名额)。
三、代码(采用事物处理)
$portalTagModel = new PortalTagModel(); $setsum= new SetModel(); Db::startTrans(); try{ $set=SetModel::get(1); if($set->ic<=0){ die(); }else{ $data=['status'=>1]; $w=[];$w['id']=1;$w['ic']=['gt',0]; $portalTagModel->insert($data); $state=$setsum->where($w)->setDec('ic',1); if($state==0){Db::rollback();} Db::commit(); print_r("完成"); die(); } } catch (\Exception $e) { Db::rollback(); } die();
四、使用并发工具测试。
设置50人同时并发访问页面,进数据库查看入库情况,仅3条成功入库。
五、完毕。