php订单号生成方案探讨

发布时间:2020-12-23编辑:脚本学堂
有关php生成订单号的方案探讨,如何在php中生成唯一订单号,是大家比较关心的问题,参考下本文的方案吧。

本节内容:
php生成订单号的思路分析。

在高并发的支付平台上偶尔的订单重复带来很麻烦的事情,大家有没有好的避免重复的订单号生成算法(以固定长度的数字串)。

其实用“年+月+日+下单时间的秒数+毫秒+下单的顺序号或者是用户ID”就完全能够保证订单号的唯一性。
例如:
订单号:2012021331990528
2012年02月13日3199(下单时间:00:53:19)052(毫秒)8为下单顺序号

我觉得可以用microtime()获得微秒值加上客户端ip生成md5值作为订单号
 
我刚解答了另外一位的高并发ID重复的问题,彻底的解决办法是一个while判断该订单号是否存在数据库中(缓存),如果不存在,那么继续。

相关链接:php 自动生成订单编号二种方法

生成订单的时候 标示符 + 年 + 月 + 日 + 用户id + (n-用户id)位的随机数
订单 为 18 位
比如 D + 12 +01 + 12 + 312 + (11 - 3)位随机数
 
可以把用户ID加入到订单号序列中。
由于用户会不断增加,所以此位数长度不定,会导致订单号长度不一致。
可以对用户ID进行运算,使用一定的算法进行处理,最终变成一个四位长度左右的字符串。这样可以将重复的机率再降低一些。具体能降到多少,暂时没法计算。