情况:人们会在我的系统上订购门票,我想生成门票号码。
该应用程序并不是那么大,而且已经可以运行了。后端完全用 vanilla php 编写。
但我一次只对一名用户进行测试。现在我猜想多个用户有可能同时访问票证订单,因为公司内订购的时间窗口很短。
数据库 (MongoDB) 将每个事件保存为文档。每个文档都有一个字段,用于保存第一个免费票号。付款过程结束后,php 脚本检查用户购买了多少张票,然后开始生成票号(获取当前值 -> 增加 -> 将其保存到数据库 -> 等)。现在,当两个人同时执行此操作时,可能会发生这样的事情:两个人都将获得 2314 作为当前可用数字,并且随后都会增加该数字。现在有两张票号相同的票。
我考虑更改为 sql 并获取插入行的 id,因为这已经是一个唯一的数字。我也想过取当前时间+盐并对其进行哈希处理(但这样就会出现残酷的票号)。
但我想知道是否有可能在不使用 sql 之类的 db 函数的情况下实现这一目标。我想这在其他场景中也很有用,在这些场景中我可能无法使用诸如 sql 之类的东西。我想过“阻止对数字/函数的访问”之类的事情,直到第一个调用函数再次释放它。
缥缈止盈
倚天杖