PHP-php订单号生成方案
在高并发的支付平台上偶尔的订单重复带来很麻烦的事情,大家有没有好的避免重复的订单号生成算法(以固定长度的数字串)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在高并发的支付平台上偶尔的订单重复带来很麻烦的事情,大家有没有好的避免重复的订单号生成算法(以固定长度的数字串)。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
其实用“年+月+日+下单时间的秒数+毫秒+下单的顺序号或者是用户ID”就完全能够保证订单号的唯一性。
例如:
订单号:2012021331990528
2012年02月13日3199(下单时间:00:53:19)052(毫秒)8为下单顺序号
我刚解答了另外一位的高并发ID重复的问题,彻底的解决办法是一个while判断该订单号是否存在数据库中(缓存),如果不存在,那么继续
生成订单的时候 标示符 + 年 + 月 + 日 + 用户id + (n-用户id)位的随机数
订单 为 18 位
比如 D + 12 +01 + 12 + 312 + (11 - 3)位随机数
可以把用户ID加入到订单号序列中。
由于用户会不断增加,所以此位数长度不定,会导致订单号长度不一致。
可以对用户ID进行运算,使用一定的算法进行处理,最终变成一个四位长度左右的字符串。这样可以将重复的机率再降低一些。具体能降到多少,暂时没法计算。
我觉得可以用microtime()获得微秒值加上客户端ip生成md5值作为订单号