PHP生成唯一订单号

转载 2015年07月10日 12:05:15

/**
 *
 * uniqid - 官方是这样说的:
 * Gets a prefixed unique identifier based on the current time in microseconds.
 */
function build_order_no()
{
    return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}


用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位。但是这个字符串里面有英文字母,咋办?

用ord获取他的ASCII码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点)。
然后返回的还是一个数组,KO,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全世界不会有多少重复的。
当然,除非你把服务器时间往前调,但是调也不用怕,哥不相信他会在同一微秒内下两次订单,网络数据传输也要点时间的,即便你是在本地。

相关文章推荐

PHP生成唯一订单号

在日常的网站开发中,我们经常需要生成唯一的订单号。订单号太短,在高迸发情况下,很容易造成订单号重复事件,虽然是小概率事件。下面我们使用PHP多个函数生成一个现在最常用的订单号格式:$order_num...

PHP生成唯一订单号的方法汇总

echo date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); 订单号常见的几种方式:1.利用数据库主键值产生一个自增长的订单...

U8Server——分布式环境下唯一订单号生成规则

U8Server支持分布式部署之后, 我们还有一个问题需要解决, 那就是分布式环境下,唯一订单号生成问题。 之前U8Server的订单号生成规则是 32位时间戳+32位序号,最终生成一个64位的lon...

用mysql的存储过程实现生成唯一订单号

DELIMITER $$ USE `roamerbuddy`$$ DROP PROCEDURE IF EXISTS `generate_orderNo`$$ CREATE DEFINER=`ro...

关于生成订单号的解决方案PHP

关于生成订单号的解决方案 电子商务及类电子商务的系统越来越多,我相信订单号问题是这类系统中最常见不过的一个问题了,但今天还是想谈谈。 这几天由于工作需要接手了另外一同事前期开发的一个交易系...
  • slyjit
  • slyjit
  • 2014年05月29日 16:30
  • 1305

Google支付 PHP端验证订单号的有效性

1.创建API应用 APIs Console https://code.google.com/apis/console 需要用谷歌开发者账号登陆,该账号要和发布谷歌应用申请谷歌应用的那个账号相同,...

订单号自动生成

  • 2014年08月14日 17:08
  • 3.85MB
  • 下载

解析各大电子商务网站订单号的生成方式

摘要:订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式... 转载请注明来源:解析各大电子商务网站订单号的生成方式 订单是整个电子商...

Sql Server生成订单号

在SQL Server中生成订单号的方法有许多种,现归纳如下: SQL语句:select replace(substring(convert(varchar(20),getdate(),120),1...

解析各大电子商务网站订单号的生成方式

订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式。 现在大型电商网站大多都有好几种下单途径。 比如:通过Web网站下单,通过打电话到呼叫中心...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP生成唯一订单号
举报原因:
原因补充:

(最多只允许输入30个字)