请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

高并发下单锁的问题

高并发下单的时候,如果用这种写锁的话,就会造成点击该商品查看商品详情的时候就会出现bug的情况。老师,也可以用文件锁吧?

https://img1.sycdn.imooc.com/szimg//59775c1600017b9d08940066.jpg

正在回答 回答被采纳积分+3

2回答

哈七八搭 2018-08-07 23:09:45

文件锁也是可以解决高并发的问题的。在runtime里面生成一个文件,在用户进来减少库存时,把文件lock住,当用户操作完毕,把文件unlock。后面的人在前面的人没操作之前是不能修改的。

0 回复 有任何疑惑可以回复我~
编程浪子 2017-07-26 09:11:29

文件锁,啥意思?
你说遇到的问题应该是那一刻卡住了,但是往往一个事物在30ms之内处理完成的,所以对于一般网站够用了,我在课程中讲解了2种锁,一种悲观锁 一种乐观锁,在并发量高到一定程度会使用其他手段辅助,例如每年的火车票秒杀,或者常规秒杀,在那一会总会出现服务很慢的情况,一般会加入redis之类解决

0 回复 有任何疑惑可以回复我~
  • 提问者 眺望未来er #1
    老师用的第二种锁给了很好的启发。之前开发的时候,我用了另外一种PHP的文件锁机制,在减库存量的代码前面$fp = fopen('./order.lock', 'r');flock($fp, LOCK_EX);库存量更新完后释放锁 flock($fp, LOCK_UN);fclose($fp);
    由于高并发秒杀的时候mysql的锁会造成商品表相关操作处于阻塞状态,整个网站跟这个表相关的功能都被拖慢,用户体验不太好。
    回复 有任何疑惑可以回复我~ 2017-07-26 19:32:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信