如何控制多个用户的并发操作


how to control concurrent operation of multiple users

我会尽量让我的问题简明扼要,我正在为一家快递公司开发一个基于php的应用程序,在该应用程序中,多个用户可以登录到一个由多个文本框字段和两个按钮组成的页面,第一个按钮(Add New(用于自动生成尚未插入数据库的新的空文档编号,第二个按钮(Save(用于将从文本框字段中获取的数据与文档编号一起插入数据库,

现在,假设两个用户同时登录到该页面,并且他们都想将数据插入数据库,假设user1按下"添加新"按钮并获得一个文档编号,例如1000,同时user2也按下"添加新建"按钮并获取已经分配给user1的同一文档编号,因为user1还没有按下"保存"按钮,这意味着文档号1000在数据库中甚至不包含一行,因为还没有用户按下"保存"按钮。

如果用户1按下"保存"按钮,将数据插入文档号为1000的数据库,然后用户2来按"添加新的",他将获得一个递增的值,即1001,这对我来说很好。

我的问题是,如果两个用户同时按下"添加新文档"按钮,我如何分配不同的文档编号?

有人能帮我摆脱困境吗?是的,提前感谢:(

public static $is_locked = false;
function issue_document_number($params_if_required){
   //for core php write this line 
   global $is_locked; 
   $is_locked = true;
   //for OOP, if you are in class
   $this->is_locked = true;
   //make your calculations here to get desired number
   $is_locked = false;       
   return $document_number;
}

在调用时,检查功能是否锁定sleep 1 1或2秒,然后再次调用

while($is_locked==true){
   sleep(1);
}
$my_unique_number = issue_document_number($params_if_required);

进行查询并添加到DB