我会尽量让我的问题简明扼要,我正在为一家快递公司开发一个基于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