PHP乐观锁加事务扣款为何只成功一次?

php乐观锁加事务扣款为何只成功一次?

php使用乐观锁加事务扣除余额为何只成功扣了1次?

在扣除用户余额时,出现了只扣除一次的情况,究其原因是以下几个方面:

事务范围错误

应将与金额相关的操作都置于事务中,但实际代码中使用了 find 查询,该查询会执行一个 select 语句,这是错误的事务使用方式。

立即学习“PHP免费学习笔记(深入)”;

乐观锁使用错误

find 查询后,再调用 save 更新余额,ではなく乐观锁的预期行为。乐观锁的预期 SQL应该是仅在旧余额为指定值时更新新余额。

事务管理错误

Db::transaction 启动的事务不需要手动提交,因为内部会自动提交。如果出现异常,只需抛出异常,事务内部会自动回滚并继续抛出异常。

第二种方式奏效的原因

第二种方式奏效是因为隔离了查询用户信息和更新余额的操作,防止了并发时的超卖问题,但仍存在乐观锁使用错误的问题。正确的做法是将查询余额和更新余额都置于事务中,并使用乐观锁判断旧余额是否为指定值,以确保更新的正确性。

以上就是PHP乐观锁加事务扣款为何只成功一次?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1425759.html

(0)
上一篇 2025年2月17日 23:33:29
下一篇 2025年2月17日 23:33:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Linux 常用命令全拼

    pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径  ps: process status(进程状态,类似于windows的任务管理器)  常用参数:-auxf   ps -auxf 显示进程状态 …

    2025年4月2日
    100
  • 利用 Linux 查找重复文件

    方法一:使用Find命令 本部分算是对find强大功能的扩展使用方法说明。在find的基础上,我们可与(如xargs命令)等其它基本Linux命令相结合,即能创造出无限的命令行功能,比如:可以快速查找出Linux某个文件夹及其子文件夹中的重…

    2025年4月2日
    100
  • Nginx – 最小配置

    安全服务器是只允许所需数量的服务器。理想情况下,我们将通过单独启用其他功能来基于最小系统构建服务器。进行最少的配置也有助于调试。如果该错误在最小系统中不可用,则分别添加功能,然后继续搜索错误。 这是运行nginx所需的最低配置: # /et…

    2025年4月2日
    100
  • Linux 这些工具堪称神器!你用过哪个?

    ag:比grep、ack更快的递归搜索文件内容。 tig:字符模式下交互查看git项目,可以替代git命令。 mycli:mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。 jq: json文件处理以…

    2025年4月2日 编程技术
    100
  • Linux 思维导图整理(建议收藏)

    今天整理了一下收集的Linux思维导图。 Linux 学习路径 Linux 桌面介绍 FHS:文件系统目录标准 Linux 需要特别注意的目录 Linux 内核学习路线 地址: https://www.jianshu.com/p/b087a…

    2025年4月2日 编程技术
    100
  • 深入理解Linux shell中2>&1的含义(全网最全,看完就懂)

    1 和 2 在 Linux 中代表什么 在Linux系统中0 1 2是一个文件描述符 &1的含义(全网最全,看完就懂)” > 从上表看的出来,我们平时使用的 echo “hello” > t.log 登录后复…

    2025年4月2日
    100
  • Linux 下大文件切割与合并

    往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。 文件切割 – split 在 Linux 系统下使用 split …

    2025年4月2日
    100
  • 超全整理 – Linux性能分析工具汇总合集

    出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对…

    2025年4月2日 编程技术
    100
  • 程序员为什么一定要用Linux?

    大多数人推荐Linux,基本上都会说Linux让你更高效、更优秀。 然而工具只是工具。 然而工具只是工具。 然而工具只是工具。 优秀程序员和不优秀程序员的区别首先是态度上的区别。 他们有自己的理想,思考很多,不管是项目开始之前还是在项目进行…

    2025年4月2日
    100
  • 面试官常考的 21 条 Linux 命令

    正文 find /var/mail/ -size +50M -exec rm {} \; 登录后复制 四、文件的权限  使用 “+” 设置权限,使用 “-” 用于取消 9. chmod 命令 …

    2025年4月2日
    100

发表回复

登录后才能评论