【发布时间】:2014-01-29 20:18:15
【问题描述】:
在我的应用程序中,我有 2 个进程几乎同时运行并更新相同的 AR 模型。
当其中一些进程看起来没有完成时,我遇到了这个错误,但单独调试它们没有错误。
然后我明白问题可能发生在下一个案例中:
- 进程 A 选择行 X
- 进程 B 选择行 X
- 进程 B 更新第 X 行
- 进程 A 更新第 X 行
在上述情况下,进程 A 将覆盖进程 B 写入的所有内容。
B 和 A 都更新不同的属性。
有没有办法避免这种覆盖?是否有某种机制可以让 AR 只更新“脏”属性而不是所有模型属性?
请不要在不使用 AR 的情况下向我解释解决方案。我明白了。但我想知道是否有一些解决方案可以让我仍然使用 AR 正确地进行所需的更新。
谢谢。
【问题讨论】:
-
你不使用 AR 的交易吗?
-
请描述过程
-
@AliMasudianPour 当然,每个进程都使用事务,因为它们都执行与与其他 Web 服务拨号相关的复杂工作。但是TR并没有解决问题
标签: php database activerecord yii process