下面由Laravel教程栏目给大家介绍laravel排他锁lockForUpdate()使用问题,希望对需要的朋友有所帮助!

对于mysql的排他锁,做了一个测试,看下是否存在排他效果。

于是,再次做下面测试:
将路由1的控制器方法里加了一个sleep()方法:

DB::beginTransaction(); // 开启事务
$goods = Goods::lockForUpdate()->first();
print_r($goods);sleep(10);echo 'ddd';
登录后复制

然后,访问路由1/locktest1,页面在等待刷新;再访问路由2/locktest2,页面也在等待刷新,说明应该是产生数据阻塞了,因为路由2中没有sleep(),正常情况下是立即执行的。
10秒过后,/locktest1页面打印出数据,同时/locktest2页面也打印出数据。

由此判断,上面测试3没有产生阻塞效果,应该就是控制器的方法结束后,自动结束事务导致的。

以上是个人分析,如有大神路过,还望留言告知一个正确答案!

更多编程相关知识,请访问:编程教学!!

以上就是分析laravel排他锁lockForUpdate()使用问题的详细内容,更多请关注Work网其它相关文章!

08-16 10:38