php 生成唯一订单号

/*获取唯一订单号*/
function order_number($order_header){
    global $redis;
    if(trim_all($order_header)!=""){
         $order_header=trim_all($order_header)."-";
    }
    $time=time();
    $microtime_arr=explode(".",microtime(true));
    $order_microtime=str_pad($microtime_arr[1],4,"0",STR_PAD_LEFT);
    $order_date=date("ymdHis",$time);
    $order_redis_num=rand(0,9999);
    if(REDIS_STATE==1){//如果redis服务器正常开启,则获取redis自增值,最大限度降低订单号重复概率
        $order_redis_num=$redis->incr("order_redis_num:".$order_date.$order_microtime);
        $redis->setTimeout("order_redis_num:".$order_date.$order_microtime, 2); //设置两秒后自动过期,释放内存
    }
    $order_redis_num=str_pad($order_redis_num,4,"0",STR_PAD_LEFT);//支持每毫秒9999次访问,解决重复访问,可根据redis访问情况再增大
    $order_rand=rand(10,99);
    $order_number=$order_header.$order_date.$order_microtime.$order_redis_num.$order_rand;
    return strtoupper($order_number);
}

 

posted @ 2020-04-02 09:53  酷酷的城池  阅读(407)  评论(0编辑  收藏  举报