在处理数据时是否需要锁定记录以避免不一致?

时间:2016-09-10 15:56:56

标签: php mysql sql multithreading synchronization

我担心会阻止同一数据的并发写入。 (PHP + MySQL)

我有一个简单的流程:

选择一条记录 - >用PHP处理数据 - >更新记录

我的噩梦场景(见下面的示例)是User1和User2都从数据库中拉出相同的记录,并且都改变并写回记录...导致其中一个用户'变化被淘汰而没有被看到。

是否可以在"单线程"中运行PHP?模式,它将对两个用户的操作进行排队?

谢谢!

修改

为了使事情更清楚,这是我想避免的场景:

  • 用户1从DB(SELECT)
  • 获取数据v1
  • 用户2从DB(SELECT)
  • 获取数据v1
  • 用户1生成数据v1.1(PHP)
  • 用户2生成数据v1.1' (PHP)
  • 用户1更新数据(更新:v1.1在数据库中)
  • 用户2更新数据并删除数据v1.1(更新:v1.1'在数据库中)

所以我想确保在用户2获取数据之前,用户1已经更新了它。我不知道这是否是事物的自然顺序,我无所事事,或者我是否需要设置锁定。

1 个答案:

答案 0 :(得分:0)

据我所知,PHP中没有线程,但 pthreads http://www.php.net/manual/en/intro.pthreads.php

等API

可用于线程化:

  

它包含创建多线程所需的所有工具   应用

顺便提一下这个问题在SO ...