首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并发多用户访问php+mysql

并发多用户访问php+mysql
EN

Stack Overflow用户
提问于 2012-06-04 17:48:20
回答 5查看 1.1K关注 0票数 3

我将使用php+mysql开发库存维护系统。它将运行在服务器机器上,因此许多用户可以更新库存数据。(入/出)

我目前正在这个系统上工作。我有以下问题。

代码语言:javascript
复制
User A opens record “A”. ex- val=10
User B opens record “A”. ex - val=10
User A saves changes to record “A”. ex - val=10+2=12 (add 3 items, then stock should be 12)
User B saves changes to record “A”. ex - here i need to get record "A" value AS = 12, then B update val=12+3=15. (then add 3 items final stock will be 15)

In this example, User A’s changes are lost – replaced by User B’s changes.

我知道mysql可以促进行级锁定。我的问题是,

是无害数据库引擎,可以进行并发控制;这足以( innodb )避免“丢失更新”问题。或者需要做额外的编码来避免这个问题。

这足够了吗?请告诉我,innodb如何与前面的示例一起工作。(更新丢失)

(对不起,我的英语很差)

谢谢

EN

回答 5

Stack Overflow用户

发布于 2012-06-04 17:59:04

InnoDB允许并发访问,因此用户A用户B绝对可以处理相同的数据。用户A将根据他/她的数据更新行,然后用户B也可以这样做--最终导致用户A丢失数据。

如果每个更新都是至关重要的,那么您应该考虑另一种方法。例如,如果两个用户都在更新一篇博客文章,您可以创建一个新的表来保存所有这些编辑。尽管在检索文章内容时,这两个用户的编辑都将被保留。当检索到文章时,您可以检查最近的编辑何时发生,并将其检索。

票数 2
EN

Stack Overflow用户

发布于 2012-06-04 18:01:25

听着,有一种叫做“版本控制”的东西。

这个想法很简单:

当用户打开记录时,他也会得到版本号。

当他在sql级别保存对该记录的更改时,更新是有条件的,这意味着只有在当前版本相同的情况下,更新才会发生。此更新还将版本增加一个。

这样可以确保你不会给你的记录的“陈腐”副本写信。

希望一切都清楚。

票数 2
EN

Stack Overflow用户

发布于 2012-06-04 18:06:50

您还可以对服务器实现一些轮询,保存行的最后更新的记录,如果用户B在A之前更新记录,那么您可以通知用户A,记录已经更新,他的更改不会生效,或者可以动态更新值。

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

https://stackoverflow.com/questions/10885711

复制
相关文章

相似问题

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