项目中遇到并发问题和解决办法
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的解决办法(转)(代码片段
使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法