美文网首页
Thinkphp使用乐观锁的N个坑

Thinkphp使用乐观锁的N个坑

作者: geeooooz | 来源:发表于2018-03-02 15:19 被阅读83次

官方的说明实在太随意,大概是因为这个功能使用的人太少吧。所以也懒得去维护和解释。

官方文档:https://www.kancloud.cn/manual/thinkphp/1783

要点:

1、精简版核心必须加上ThinkPHP/Library/Think/Model 文件夹,可以在完整版里拉过去;

2、普通的M()方法除非自己改代码否则无法使用乐观锁,必须定义模型;

3、定义好模型必须继承AdvModel方可使用乐观锁;

4、定义好模型后,如果主键不是”id”,需要在模型内自行指定好主键否则出错,原因还没排查;

protected $pk = 'uid'; //这样指定
5、使用乐观锁时必须带where…且where里面要求有主键,且不可以是”uid=?”这样的形式,必须是[“uid”=>?],否则乐观锁和你无缘;

6、最后一步才是官方轻描淡写的: 数据表里加个lock_version字段就可以了~

暂时发现这么多,发现你的lock_version字段有增长说明当前逻辑没问题了,其他写法有没有问题,建议使用的时候严谨的测试..
转载自:WBB » Thinkphp使用乐观锁的N个坑
另外一篇有关乐观锁的:tp3.2乐观锁与悲观锁

相关文章

  • Thinkphp使用乐观锁的N个坑

    官方的说明实在太随意,大概是因为这个功能使用的人太少吧。所以也懒得去维护和解释。 官方文档:https://www...

  • ThinkPHP链接 PgSQL

    ThinkPHP version: 5.1.* 使用 ThinkPHP 框架连接PGSQL时遇到的坑, 记录下来....

  • Mysql锁

    按照使用方式,锁分为: 悲观锁 乐观锁 乐观锁 概念就不细讲了,乐观锁和悲观锁的区别是乐观锁是假设在修改数据之前,...

  • StampLock 之二

    乐观读锁的获取 乐观读锁只需要获取,不需要释放。只要没有线程获取写锁,那么就能获取到乐观读锁。当然,当使用由乐观读...

  • 悲观锁和乐观锁的原理及使用场景

    悲观锁和乐观锁的区别 场景 什么时候使用乐观锁? 资源提交冲突,其他使用方需要重新读取资源,会增加读的次数,但是可...

  • MySQL数据库InnoDB引擎的读写锁、事务隔离级别实例分析

    数据库锁分类 按性能分 乐观锁(比如使用version字段比对,无需等待)、悲观锁(需要等待其他事务) 乐观锁,如...

  • 递增场景

    synchronized使用系统重量级的锁 AtomicXXX使用无锁-自旋锁,CAS-类似于乐观锁, 所以效率优...

  • 深入理解锁机制(Java)

    Java提供了丰富种类的锁,在适当的场景使用合适的锁能够展现出非常高的效率。常用到的锁就有乐观锁和悲观锁。 乐观锁...

  • Java采坑之路-mybatis使用乐观锁

    由于公司的老项目使用的是struts2+mybatis+spring,有秒杀的场景,但是每次秒杀都有失败的情况。然...

  • redis实现秒杀功能

    使用乐观锁的方式来实现秒杀功能

网友评论

      本文标题:Thinkphp使用乐观锁的N个坑

      本文链接:https://www.haomeiwen.com/subject/zmuaxftx.html