处理多用户(开具发票)

时间:2009-08-18 15:25:28

标签: php sql multi-user

处理多用户

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

  1. 查看记录并更新某些字段。
  2. 通过选择订单开具发票。
  3. 问题: 问题是发票不应在同一时间段内发出两次。此外,两个或多个用户不应同时更新字段。

    可能的解决方案:

    1. 在更新表时锁定表,如果用户执行操作,则通知并重新加载。
    2. Impliment lock系统,当用户执行某些操作时,它会锁定其他用户要执行的操作。
    3. ...

3 个答案:

答案 0 :(得分:2)

查找'乐观锁定' - 基本上意味着添加一个版本属性并将其传回并通过更新递增它以确保没有其他人首先到达那里。如果N个用户基于相同的版本尝试相同的操作,则一个获胜,另一个则松散。对于各种各样的案例来说,这很简单。

答案 1 :(得分:1)

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

您可以为行使用时间戳。使用其他信息读取时间戳,然后保存检查当前时间戳(行)是否比您拥有的更新。通过这种方式,您可以将锁定最小化到此部分,比较时间戳和更新,如果您是第一个到达那里的人。

答案 2 :(得分:0)

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