1.初步--这种如果并发+巧合有可能会重复
function genRequestSn($unique=0){
$orderNo = date('YmdHis').substr(microtime(), 2, 5) . mt_rand(10000,99999);
return $orderNo;
}
2.加工一下 穿一个唯一标识 如用户id拼接在订单号后面 这样订单号根据用户走基本上不会重复 但任然有可能重复 基本上可以了
function genRequestSn($unique=0){
$orderNo = date('YmdHis').substr(microtime(), 2, 5) . mt_rand(10000,99999);
if(!empty($unique)) $orderNo = $orderNo.$unique;
return $orderNo;
}
3.根本上解决
思路:为了防止重复 可以预先生成订单号 进行去重 存起来 比如存redis队列 用的时候取一个出来用就行