雨的味道

【技术】高精度生成可分表的订单ID

需求:

1、订单号按尾号分表

2、可以按用户搜索到对应用户的分页订单


设计ID生成器

// 生成订单ID,1毫秒有小概率会产出重复ID
function get_order_id($user_id) {
    $suffix = substr(strval($user_id), -3);
    $time = microtime(true) * 10000;
    $rand = mt_rand(0, 99);

    return intval($time . $rand . $suffix);
}

// 用hrtime高精度的生成毫秒部分,单机上解决了上面的生成器小概率生成重复的问题,仅用于php 7.3
function get_order_id2($user_id) {
    $suffix = substr(strval($user_id), -3);
    $time = time();
    $nsec = hrtime()[1];
    $msec =  str_pad(intval($nsec / 1000), 6, "0");

    // 保证进程内连续调用产生不一样的值
    usleep(1);

    return intval($time . $msec . $suffix);
}

// TODO 跨机器的可以再借位生成不同机器的编码


该生成器可以生成最大999张分表的订单id

«   2023年1月   »
1
2345678
9101112131415
16171819202122
23242526272829
3031
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero Theme By 爱墙纸

百度资讯综合思念体对有机生命接触用人形终端界面 那就是
晋ICP备15000230号-1