项目中遇到并发问题和解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目中遇到并发问题和解决办法相关的知识,希望对你有一定的参考价值。

最近在做一朋友帮砍价的活动。建立在微信公众号端的一个电商平台,然后我负责砍价模块。

由于这个模块高并发的几率比较大,所有有些逻辑模块就要采取一些缓存技术和排它锁的用户,

比如:由于项目需求是可以多个人同时砍价,我们又有砍到最低价格的限制,所以不进行处理的话很有可能就会超出我们所限制的价格!所以当用户砍价砍到最低价的时候就需要用到排它锁了 ,直接上代码:

 

 

 
//说明砍到最低价
                   $order_price = $res[‘bg_order_price‘]-$res[‘bg_floorprice‘];
                   $file = BASE_DATA_PATH.‘/lock/‘.$res[‘bargain_id‘];
                   $name = $this->deploy[‘prefix‘].‘bargain_‘.$res[‘bargain_id‘];
                   $is_hot = json_decode($this->redis->get($name),true);
                   if($is_hot[‘is_hot‘]==1){  //该活动属于爆款

                       if ($fp = fopen($file, ‘w‘)) {
                           flock($fp, LOCK_EX);//加排它锁锁
                           //执行你的代码
                           $true_number = $this->true_hot_number($res[‘bargain_id‘]);
                           if($true_number < $is_hot[‘bg_store‘]){//判断是否被抢光
                               //没有被抢光写入砍到最低价时间
                               $this->table(‘bargain_order‘)->where(array(‘bg_order_id‘=>$order_id,‘bargain_id‘=>$res[‘bargain_id‘]))->update(array(‘min_time‘=>time()));
                           }
                           flock($fp, LOCK_UN);//解锁
                           fclose($fp);
                       }
                  }

  

以上是关于项目中遇到并发问题和解决办法的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

git使用过程中遇到的问题及其解决办法

使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法

VsCode 代码片段-提升研发效率

使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法

搭建悟空crm9项目运行环境过程中遇到的一些问题和错误解决办法