【问题标题】:phalcon row locking with models带有模型的 phalcon 行锁定
【发布时间】:2015-06-02 13:43:40
【问题描述】:

由于 forUpdate 仍然不起作用 (https://github.com/phalcon/cphalcon/issues/2407),在 db 中锁定 SELECT 行的最佳方法是什么?

我有一个 innodb 表,其中包含要处理的项目。我通过 cronjob 开始一些任务,这些任务负责处理要处理的项目 (status=open),用 status=processing 更新行,然后做一些事情。我该如何保护之间的时间

$oModel->findFirst('status="open"');

$oModel->update(['status' => 'processing']);

?

【问题讨论】:

  • 问题说:在 Phalcon 2.0.4 中实现

标签: database innodb phalcon rowlocking


【解决方案1】:

您可以通过设置选项 for_update => true 来做到这一点。

$this->db->begin();

$oModel->findFirst( [
   'conditions' => 'status="open"',
   'for_update' => true
] );

$oModel->status = 'processing';

$oModel->update();

$this->db->commit();

for_update 选项将在它读取的每一行上设置排他锁。 也可以看文档https://docs.phalconphp.com/en/latest/reference/models.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多