準備事項:
一、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條成功入庫。
五、完畢。