我担心防止同时写入相同数据。 (PHP + MySQL)
我有一个简单的流程:
选择一条记录 -> 在 PHP 中处理数据 -> 更新记录
我的噩梦场景(参见下面的示例)是 User1 和 User2 都从数据库中提取相同的记录,并且都更改并写回记录......导致其中一个用户的更改被冲掉而没有被看到.
是否可以在“单线程”模式下运行 PHP,这将使两个用户的操作排队?
谢谢!
编辑:
为了让事情更清楚,这里是我想避免的场景:
- 用户 1 从数据库中获取数据 v1 (SELECT)
- 用户 2 从数据库中获取数据 v1 (SELECT)
- 用户 1 生成数据 v1.1 (PHP)
- 用户 2 生成数据 v1.1' (PHP)
- 用户 1 更新数据(更新:v1.1 在数据库中)
- 用户 2 更新数据和删除数据 v1.1(更新:v1.1' 在 DB 中)
所以我想确保在用户 2 获取数据之前,用户 1 已经更新了它。我不知道这是否是事物的自然顺序,我无事可做,或者我是否需要加锁。
最佳答案
据我所知,PHP 中没有线程,但有像pthreads 这样的API http://www.php.net/manual/en/intro.pthreads.php
可用于线程:
It includes all the tools you need to create multi-threaded applications
顺便说一句,这个问题在 SO 上讨论了很多......
关于php - 我在处理数据时是否需要锁定我的记录以避免不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427873/