近期正在开发一个B2C的网站,想要生成有规律的订单号,比如今天的第一个订单号是 201012280001 ,第二个订单号是201012280002。在上网google了半天也没找到合适的,因为很多代码都没考虑到数据并发的问题。大哥大姐 给个设计思路

解决方案 »

  1.   

    /***
    个人建议,没有必要一开始把一个应用想得过于复杂,和不设计就开发一样,过度设计也是一种问题。[参见:code complete ]
    这事就简单处理一下即可,写库时,查询当天最大的,然后+1 ,返回。所谓高并发而且是高并发的写入,是不容易的事,试想一下,一个b2c 网站1秒钟100个订单,一分钟就6000个订单了,一小时,差不多你我这辈子就不用再写代码了,然而在这个范围内,你还是可以去查询数据库,不用折腾什么高级玩意儿。*/
      

  2.   

    orderId=date("Y-m-d H:i:s").mk_rand(1,1000000);
    然后把orderId设为唯一键就足够了。有了唯一键,订单号就不会出现重复。
    流水号你没有必要按照0001,0002这样来。随机值就行了。
      

  3.   

    假设$order['ordersn']就是最后一条订单号
    $date_Ymd = date('Ymd');
    if($date_Ymd != substr($order['ordersn'],0,8)){
    $ordersn = $date_Ymd . str_pad(1, 6, '0', STR_PAD_LEFT);
    }else{
    $ordersn = $date_Ymd . str_pad(substr($order['ordersn'],8)+1, 6, '0', STR_PAD_LEFT);
    }
    上面这个应该是LZ要的