首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的MySql表锁

PHP中的MySql表锁
EN

Stack Overflow用户
提问于 2012-12-29 22:18:53
回答 2查看 986关注 0票数 5

我正在用PHP做一个new服务,它根据一个表中的select进行一系列计算,然后用新的结果更新表。

然而,我希望防止另一个人在另一个人的会话仍在进行更新时调用相同的where服务的情况。

锁定整个表,然后再解锁,这是正确的做法吗?如果是这样,我如何使用PHP pdo锁定和解锁mysql表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-29 22:25:11

我发表了一条评论:

不是一个直接的答案,但我不认为这是任何问题。计算和从数据库获取数据在几毫秒内完成。两个人同时交互的机会是如此之小,以至于大多数人都不会费心制作这样的锁。

但是,如果这些计算很关键,您可以通过添加一个新字段并简单地将其命名为occupiedbusy或类似的名称来防止此问题。

运行脚本时,检查此字段是否设置为示例1,如果是,请使脚本休眠1-2-3秒,然后重试。如果该字段设置为0,请将其更新为1,执行计算,然后再次将其设置回0。

这将防止两个人同时访问相同的值。

票数 0
EN

Stack Overflow用户

发布于 2012-12-29 22:26:27

像MySQL这样的数据库管理系统足够智能,可以防止像这样的并发冲突。

查看数据库隔离级别(读取未提交、已提交读取、可重复读取、可序列化)和-> Wikipedia可能存在的问题(脏读取、不可重复读取...)。

就我个人而言,我不建议在您的情况下使用表锁。您最好将计算和数据库操作包装在一个事务中,并依靠数据库管理系统来管理您的内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14082493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档