laravel排他锁lockForUpdate()的使用示例

  介绍

这篇文章主要介绍laravel排他锁lockForUpdate()的使用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

测试1:命令行测试排他锁

首先在命令行里测试,开了两个命令行
首先在命令行1添加排他锁:
 laravel排他锁lockForUpdate()的使用示例“> <br/>然后再命令行2里测试访问:<br/> <img src= DB:: beginTransaction();,//,开启事务   goods 美元;=,商品:lockForUpdate()→第();   print_r(商品)美元;

先访问路由<代码>/locktest1> 所以在此访问<代码>/locktest2>

测试3:laravel控制器方法与命令行混合测试排他锁

1,先在命令行里开启事务添加排他锁,同测试1里的命令行1的操作,
然后访问路由<代码>/locktest1> 最后命令行里提交提交。
2,先访问路由<代码>/locktest1> 然后在命令行里开启事务添加排他锁,同测试1里的命令行1的操作,发现正常查询出数据,没有阻塞;说明laravel的控制器方法里的排他锁操作确实没有成功。

总结:为什么laravel的lockForUpdate()没有效果呢,还是说laravel控制器方法执行完毕后,会自动结束事务才导致没有阻塞效果的?

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

DB:: beginTransaction();,//,开启事务   goods 美元;=,商品:lockForUpdate()→第();   print_r(商品)美元;睡眠(10);echo  & # 39; ddd # 39;;

然后,访问路由1 <代码>/locktest1> /locktest2> 10秒过后,<代码>/locktest1> /locktest2>

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

以上是“laravel排他锁lockForUpdate()的使用示例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

laravel排他锁lockForUpdate()的使用示例