当前位置: 首页 > news >正文

超链接网站建设/网站优化排名推广

超链接网站建设,网站优化排名推广,做一个在线支付网站,江苏省住房城乡建设厅门户网站在我的袋鼠玩趣城小程序项目中,用户领取优惠券的操作时,出现上数据重复记录的现象,也就是说本来只能每人领取一张的操作,个别用户领到了2张或者3张 分析了原因:可能是网络状态不好的情况下,用户多次点击了…

在我的袋鼠玩趣城小程序项目中,用户领取优惠券的操作时,出现上数据重复记录的现象,也就是说本来只能每人领取一张的操作,个别用户领到了2张或者3张

分析了原因:可能是网络状态不好的情况下,用户多次点击了领取按钮,导至类似高并发的场景

解决办法:

1:从前端解决,(这个方法可以缓解一部分,但我个人认为不可能杜绝)

小程序的前端加上  防抖操作或者做节流操作

2:从后端解决,(php 后端)

      方法又有三种

      a:  使用php的文件锁

//这里为高并发的情况加上文件销$handle = fopen("./lock.mytxt", "w+");if (flock($handle, LOCK_EX)) {$result = $free_ticket_model->getFreeTicket($id, $store_id, $this->userInfo["uid"]);flock($handle, LOCK_UN);fclose($handle);if ($result["error"] == 0) {return JsonService::successful("ok");} else {return JsonService::fail($result["msg"]);}}

  要记录完成操作后,解锁,并且释放资源

b: 使用mysql数据库的锁 类似  select * from table  for update

 $store_order_share = StoreOrderShare::where("order_id", $order_id)->lock()->find();

   这是一个tp5中的加锁的方式  

   注意,这个写法必须是和 mysql的事务一起用才有效  也就是说上面的这句话必须是 Db::startTrans();

   bb:说到数据库,还有一个方法可以解决这个重复写入的问题,那就是使用数据库的 索引   唯一索引,如果有重复的数据,数据库直接报错,就可以解愉了

c: 使用 redis来解决,使用 setnx  加上 setexpire   watch   和redis的事务来解决

     伪代码如下

    

   public function testredis(){$redis = new \Redis();$redis->connect("127.0.0.1",6379);if($redis->setnx("lock",1)){$redis->expire("lock",5);$redis->watch("lock");$redis->multi();var_dump("做领券的操作");var_dump("领取完毕,删除这个key");$redis->del("lock");$redis->exec();}else{return JsonService::fail("领取失败");}}

使用setnx来加锁,并设置一个锁的自动过期时间,使用watch监视这个锁,使用事务使其成为一个原子性的操作

大至说一下为什么这么做吧

设置过期时间,是为了防止拿到锁的程序执行时中间出错,没有及时解锁,程序就成了一个死锁状态了,所以要让锁自动过期

为什么又要用事务来操作呢?

上面的锁是5秒过期,并且,程序在执行过无之后会删除锁,  如果其中有一个请求执行了8秒,那么在第5秒的时候,锁过期,另一个请求会抢到锁,开始执行,在第8秒时第一个请求会删除锁,请问它自己的锁已经过期了,此时它删除的锁会是谁的,所以使用了事务,来保证其原子性

http://www.lbrq.cn/news/973801.html

相关文章:

  • 做淘客网站需要备案/seo是什么牌子
  • 宝塔怎么做第二个网站/系统优化app
  • 重庆时时彩在线网站制作/天津百度推广公司电话
  • 个人响应式网站设计/淘宝运营团队怎么找
  • 网站建设详细过程/海外发布新闻
  • 做sorry动图的网站/网站优化方式有哪些
  • 济南做网站最好的公司/什么叫做关键词
  • 家装公司是做什么的/搜索引擎优化名词解释
  • 招代理网站建设公司/长沙网站定制公司
  • 塑料公司网站建设方案/域名信息查询系统
  • 做外贸到那个网站/百度搜索引擎关键词
  • 建立网站链接结构的基本方式是/青岛seo推广专员
  • 石家庄风险等级/seo黑帽教程视频
  • wordpress登录页修改/济南seo公司报价
  • 中海外交通建设有限公司网站/谷歌推广怎么操作
  • 如何策划手机网站/2021年网络营销考试题及答案
  • 广州网站设计实力乐云seo/注册百度账号免费
  • 网站开发建设成本/网站流量统计分析工具
  • 沈阳科技网站建设/今日国内新闻10则
  • wordpress视频发布站主题/伟哥seo博客
  • 京东物流网站/免费公司网址怎么注册
  • 做美容网站公司/黄页推广2021
  • 南通网站优化公司/大作设计网站
  • asp动态网站开发答案/google安卓手机下载
  • wordpress 内置 函数/郑州优化网站关键词
  • 微信网站开发教程/亚洲7号卫星电视
  • 郑州网站制作方案/网站运营培训学校
  • 网站分析怎么写/通州优化公司
  • wordpress title 竖线/长沙seo代理商
  • 有哪些做分析图用的地图网站/陕西seo公司
  • omniparser v2 本地部署及制作docker镜像(20250715)
  • 【Luogu】每日一题——Day3. P6392 中意 (数学 取模)
  • 【GPIO】从STM32F103入门GPIO寄存器
  • 学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)
  • 网络编程(TCP连接)
  • 内测分发平台应用的异地容灾和负载均衡处理和实现思路