php redis实现一个简单的电商秒杀效果代码
代码语言:phpcli
所属分类:其他
代码描述:php redis实现一个简单的电商秒杀效果代码,function miaosha表示模拟一个秒杀场景,插入队列,如果超过商品数量,就会显示秒杀结束
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php //设置redis数据库连接及键名 $redis = new Redis(); $redis->connect('127.0.0.1'); $key = 'product1'; //redis数据库key [注:默认redis数据库选择第0号数据库] //死循环 //从队列最前头取出一个值,判断这个值是否存在,取出时间和uid,保存到数据库 //数据库插入失败时,要有回滚机制 //注: rpush 和lpop是一对 while (1) { //从队列最前头取出一个值 $uid = $redis->lPop($key); //判断值是否存在 if (!$uid || $uid == 'nil') { sleep(2); echo "没有消息\n"; continue; } echo $uid."插入订单\n"; //生成订单号 $orderNum = build_order_no($uid); //生成订单时间 $timeStamp = time(); //构造插入数组 $user_data = array('uid' => $uid, 'time_stamp' => $timeStamp, 'order_num' => $orderNum); $res = addorder($uid, $orderNum, 1, 1); //如果插入失败,就要回滚,插入到队列中 if (!$res) { $redis->rPush($key, $uid); } } //数据库中插入订单 function addorder($uid, $orderNum, $productid, $amount) { // 此处是插入数据库订单表的代码,自己写吧 return true; } //生成唯一订单号 function build_order_no($uid) { return substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8).$uid; } //模拟秒杀商品数据 function m.........完整代码请登录后点击上方下载按钮下载查看
网友评论0