84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
想做做个第三方支付接口,担心下订单这一块可能出现并发.
0); if($lock){ /***********拿到锁的用户执行********/ //在这里生成订单号,写入数据库, 跳转到支付页面..... flock($fp,LOCK_UN); fclose($fp); }else{ fclose($fp); die("系统繁忙,稍后再试"); }
闭关修行中......
楼主通过文件来加独占锁,是不是意味着每笔订单的生成都会,先获取锁,然后再创建订单?这就相当于把整个订单的创建变成了一个串行操作,下单的TPS可能会小的可怜
楼主说的并发是因为,用户下单按钮点了两次,导致重复下单么?如果是,那么这种场景的解决方案有很多,参照哪些分布式事务的中间件可以保证幂等性,通过requestId/token都可以解决你的问题
可以借助redis的原子行操作实现锁,设置一个key来做标志。
可以用nmq来搞。
楼主通过文件来加独占锁,是不是意味着每笔订单的生成都会,先获取锁,然后再创建订单?这就相当于把整个订单的创建变成了一个串行操作,下单的TPS可能会小的可怜
楼主说的并发是因为,用户下单按钮点了两次,导致重复下单么?如果是,那么这种场景的解决方案有很多,参照哪些分布式事务的中间件可以保证幂等性,通过requestId/token都可以解决你的问题
可以借助redis的原子行操作实现锁,设置一个key来做标志。
可以用nmq来搞。