【问题标题】:Handling Multi Users (issuing invoices)处理多用户(开具发票)
【发布时间】:2009-08-18 15:25:27
【问题描述】:

处理多用户

要求: 我有一个应用程序(mysql php jquery),用户可以:

  1. 查看记录并更新某些字段。
  2. 通过选择订单开具发票。

问题: 问题是不应在同一时间段内两次开具发票。此外,一个字段不应由两个或多个用户同时更新。

可能的解决方案:

  1. 更新时锁定表,如果用户执行操作,通知并重新加载。
  2. 实施锁定系统,当用户执行某些操作时,它会锁定这些操作以供其他用户执行。
  3. ...

【问题讨论】:

  • 这听起来像是一个完美的 RoR 应用程序。如果您还不太专注于您的代码库,您可能需要考虑切换。

标签: php sql multi-user


【解决方案1】:

查找“乐观锁定” - 基本上意味着添加版本属性并将其传回并使用更新递增它以确保没有其他人首先到达那里。如果 N 个用户尝试基于相同版本的相同操作,则一个赢,另一个输。它快速简单,适用于各种情况。

【讨论】:

    【解决方案2】:

    不知道这是否对您有帮助,但我首先在 .Net 的 DataTable Adapter 的上下文中阅读了这一点,该适配器跟踪自您读取数据行以来对数据行所做的更改并在更改后发送回 db。它所做的是发送所有字段,而不仅仅是更改的字段。

    您可以对行使用时间戳。阅读带有其他信息的时间戳,并在保存之前检查当前时间戳(行)是否比您拥有的新。通过这种方式,您可以最大限度地减少锁定到这部分,比较时间戳并在您是第一个到达那里时更新。

    【讨论】:

      【解决方案3】:

      谢谢你们。将研究这两个选项:1 乐观锁定 (http://cwiki.apache.org/CAY/optimistic-locking-explained.html) 和时间戳方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 2013-02-08
        • 1970-01-01
        • 2016-06-20
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多