在laravel中遇到并发的解决方案


1,在mysql中创建唯一索引,在代码中try catch mysql的1062错误

2、将存在并发的代码丢给队列异步处理。这种解决方案的问题是,接下来的代码不能依赖队列的处理结果

3、使用mysql的锁,调用laravel的sharedLock、lockForUpdate。这两个方法需要放在laravel的transaction中,否则不会起作用

 

当存在并发请求时,在用jmeter测试发现sharedLock有死锁的问题, 而lockForUpdate不会。目前还不知道原因

关于sharedLock、lockForUpdate的详解参见:

https://www.sunzhongwei.com/using-laravel-sharedlock-and-lockforupdate-for-table-row-locks


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM