PHP用redis秒杀功能,thinkphp+redis实现秒杀功能

/**

* 访问产品前先将当前产品库存队列

* @access public

* @author bieanju

*/

public function _before_detail(){

$where[‘goods_id‘] = $this->goods_id;

$where[‘start_time‘] = array("lt",time());

$where[‘end_time‘] =  array("gt",time());

$goods = M("goods")->where($where)->field(‘goods_num,start_time,end_time‘)->find();

!$goods && $this->error("当前秒杀已结束!");

if($goods[‘goods_num‘] > $goods[‘order_num‘]){

$redis = $this->connectRedis();

$getUserRedis = $redis->hGetAll("{$this->user_queue_key}");

$gnRedis = $redis->llen("{$this->goods_number_key}");

/* 如果没有会员进来队列库存 */

if(!count($getUserRedis) && !$gnRedis){

for ($i = 0; $i < $goods[‘goods_num‘]; $i ++) {

$redis->lpush("{$this->goods_number_key}", 1);

}

}

$resetRedis = $redis->llen("{$this->goods_number_key}");

if(!$resetRedis){

$this->error("系统繁忙,请稍后抢购!");

}

}else{

$this->error("当前产品已经秒杀完!");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值