php订单号的生成】的更多相关文章

来自ECSHOP订单号生成函数:/includes/lib_order.php文件中的get_order_sn() /** * 得到新订单号 * @return string */ function build_order_no() { /* 选择一个随机的方案 */ mt_srand((double) microtime() * 1000000); return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); }…
需求1:订单号要求唯一.长度不太长.自增.但不能通过早上订单号和晚上订单号相减推算出平台大概一天的单量 需求2:要求生成10w张优惠券,要求券码唯一.不能太长,不能轻易猜测出其他券码 根据这些需求提供一个简单的数据库发号的sql来满足上面的需求,介绍如下 Increments表设计两个字段,Prefix和MaxNum,不需要设计主键和聚集索引,在Prefix上建立唯一索引,可Include[MaxNum]字段,这样查询时可以保证索引覆盖 将前缀和数据拼接的服务由应用来提供,数据库自负责拿到增加后…
/**        * 根据当前系统时间加随机序列来生成订单号         * @return 订单号        */        public static string GenerateOrderNo()        {            Random ran = new Random();            return string.Format("{0}{1}{2}", "用户id", DateTime.Now.ToString(&q…
在弄电商类网站的时候,往往是根据年月日时分秒的格式生成订单号(yyyyMMddHHmmss),为了解决并发性,就直接在生成订单号的区域块加上lock. 下面,我们来简单测试一下. 1.新建项目(控制台应用程序) 2.新建一个类:OrderIdHelper.cs /// <summary> /// 订单助手 /// </summary> class OrderIdHelper { private static readonly object Locker = new object()…
支持更改长度/** * 生成唯一订单号 * */ function build_order_no(){ return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); }…
require '../common.inc.php'; /* * 产品号+年的后2位+月+日+订单数 * @param [Int] $prodcutId 产品号 * @param [Int] $tradeItemid 订单号 * @return [String] 返回生成订单号串 */ function getTradeNO($prodcutId,$tradeItemid){ if(!is_integer($prodcutId)||!is_integer($tradeItemid))retur…
/** * php 生成唯一id * https://blog.csdn.net/hzqghost/article/details/18914681 */ function guid($factor='',$prefix='',$suffix=''){ list($usec, $sec) = explode(" ", microtime()); $guid = $prefix. $factor. $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOT…
Java订单号生成,唯一订单号 相信大家都可以搜索到很多的订单的生成方式,不懂的直接百度.. 1.订单号需要具备以下几个特点. 1.1 全站唯一性. 1.2 最好可读性. 1.3 随机性,不能重复,同时效率高. 直接贴代码: 简单解释: 1.根据当前的时间戳以及apache commons自己带的随机数方法生成,效率极高,而且日均千万级别不重复. 2. 而且长度固定,数据库可以设置固定的长度.22位 测试结果非常的强悍.…
今天系统出了一个问题,发现生成的订单号存在重复的情况了,这是要命的bug,不马上解决,就会有投诉了 经过改进后的代码我先简单的放一下,后面在慢慢的写清楚整个流程 string key = ""; string[] yCode = { "A", "B", "C", "D", "E", "F", "G", "H", "I&…
php版 /** * 生成唯一订单号 */ public function build_order_no() { $no = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); //检测是否存在 $db = M('Order'); $info = $db->where(array('number'=>$no))->find(); (!empty(…
out_trade_no是指商户网站唯一订单号,在商户端唯一,每个商户订单号会对应一个支付宝订单号 ,此订单号由珊瑚自己生成,商户订单号要求64个字符以内.可包含字母.数字.下划线:需保证在商户端不重复,建议格式当前时间+自定义数字 .更多内容请参见相关开放平台接口文档中的请求参数.…
1.目的:利用php的do .. while 生成一个不重复的字符串或者数组,比如(订单号.会员号) 2.不废话,代码来: $repeat_order = array(); do{ $ordersn = date('md') . random(8, 1); $repeat_order = pdo_fetch("SELECT * FROM ".tablename($tablename)." WHERE weid = '{$_W['uniacid']}' AND ordersn…
backgroud Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees. 简介 对于一个较大的订购业务场景,我们往往需要能够生成一个全局的唯一的订单号,如何在多个集群,多个节点高效生成唯一订单号?我们参考了Twitter的snowflake算法. snowflake最初由Twitter开发,用的scala,对于Twitter而言,必须满足…
高并发分布式系统中生成全局唯一(订单号)Id   1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与GUID组合起来,在保留GUID的唯一性的同时增加了有序性,以此来提高索引效率,在NHibernate中,COMB型主键的生成代码如下所示: /// <summary> /// 保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)组…
create or replace function get_request_code return varchar2 AS --函数的作用:自动生成订单号 v_mca_no mcode_apply_01.mca_no%TYPE; CURSOR get_max_mca_no IS , )) -- 查出的最大单号,截取出最后三位,如:001.002...n FROM mcode_apply_01 , ) = to_char(sysdate, 'YYYYMMDD'); -- 截取单号,如:20170…
五年没写过博客了,倒是天天在看 转来转去,又转回技术 原来一直在使用微软爸爸的东西,最近一两年开始玩android,玩java,还有PostgreSQL 都有些应用了,倒是可以整理些随笔出来,这就是其中一篇吧 c#是java的优雅版本,java的linq就是一坨那啥,嗯!觉得不爽就别看了 订单号这个玩意我想有几点得保证 1,有顺序但不连续 2,不能太长,最好15位以内 3,最好全数字 目前来说谷歌和百度出来的感觉都达不到我要的这些要求,不是太长超过20位,就是会加上字母,再就是会连续,否则就没顺…
记:之前面试的时候被面试官问过简历项目中的订单号我是什么规则生成的,我牛逼吹过头了,乱说了一通,靠!今天在公司的项目中订单号生成,好奇,看了下,就是网上的这种而已. * * uniqid - 官方是这样说的: * Gets a prefixed unique identifier based on the current time in microseconds. */ function build_order_no() { return date('Ymd').substr(implode(N…
/** * 生成订单号 * -当天从1开始自增 * -订单号模样:20190604000001 * @param Client $redis * @param $key * @param $back:序号回退,如果订单创建失败,事务回滚可用 * @return string */ public static function createOrderSn($key, $back=0) { $sn = Redis::get($key);//laravel redis读取,替换一下 $snDate =…
最近在练手一个订单提交的小项目,需要用到生成订单号,网上找了下,觉得这个最好. function build_order_no(){ return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); }…
一.确定需求 只要做过开发的基本上都有做过订单,只要做过订单的基本上都要涉及生成订单号,可能项目订单号生成规则都不一样,但是大多数规则都是连续增长. 所以假如给你一个这样的需求,在高并发下,以天为单位,生成连续不重复的订单号,比如2017年4月12日有1000条订单,那么当天的订单号是170412001至1704121000,第二天13号又有2000条订单就是170413001至1704132000. 二.实现需求 首先我们建立一个订单表 CREATE TABLE [dbo].[tbOrder]…
项目描述 最近做的一个项目有这么一个需求:需要生成一个唯一的11位的就餐码(类似于订单号的概念),就餐码的规则是:一共是11位的数字,前面6位是日期比如2019年07月20就是190720,后面五位是随机数且不能是自增的,不然容易让人看出一天的单量. 解决方案 五位随机数不能用随机生成的,不然可能不唯一,所以想到了预生成的方案: 采用redis 随机数生成 先生成10000~99999共9万个数(从1万开始是懒得再前面补0了),然后打乱分别 存入redis的list数据结构 90个key每个ke…
1.使用场景 通常,在做一些表单的功能时,需要生成唯一不重复的订单单号,本文提供的帮助类可以适合大多数场景的单号生成使用,拿来即用,方便快捷无重复.而且,在高并发的情况下也是可以使用的. 之前看到有人提供的[时间(时分秒)]+[随机数字]的方式,个人认为这种方式并不能保证唯一,因为生成的随机数是可能重复的,在高并发的情况下,在同一秒内是有可能产生两个相同的编号的. 本文使用的方法是[时间(时分秒)]+[累加数]的方式,使用一个静态int变量存储值,在项目运行过程中int值是不断累加的,一般项目中…
//8-12位随机数 function makeRand($num=){ $strand = (; if(strlen($strand)<$num){ $strand = str_pad($strand,$num,",STR_PAD_LEFT); } //return date('YmdHis').$third; return $strand; } 方法二:播种随机 //生成唯一订单号 函数1 默认每天小于9万个订单号 function makeRand( $num = ){ mt_sra…
偶尔在网上看到的,相对比较好的c#端订单号生成规则 public class BillNumberBuilder{     private static object locker = new object();            ;            public static string NextBillNumber(){         lock(locker){             )                 sn = ;             else     …
需求:订单号唯一,并且期望是时间格式加其他字符串, 实现:采用触发机制,在新增时根据新增id值加1作为订单生成的随机且确定唯一的数,因为id唯一: 遇到问题:新增时不能提前知道id值, 解决:取到当前表中最大值+1即为id: 业务需要研究几个小时终于实现一套可行方案: 代码: 建表 DROP TABLE IF EXISTS `qs_test`; CREATE TABLE `qs_test` ( `id` ) UNSIGNED NOT NULL AUTO_INCREMENT, `order_num…
先生成1~1000的随机数 class Program { // Create a new instance of the RNGCryptoServiceProvider. private static System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); static void Main(string[]…
using System;using System.Security.Cryptography; namespace Infrastructure{ public class GenerateId { public static string GetGuidHash() { return Guid.NewGuid().ToString().GetHashCode().ToString("x"); } /// <summary> /// 生成一个长整型,可以转成19字节长的字…
目前,比较火的nosql数据库,如MongoDB,Redis,Riak都提供了类似incr原子行操作. 下面是PHP版的一种实现方式: <?php /** * 基于Redis的全局订单号id * * @author liujingyu * @copyright liujingyu, 11 八月, 2014 **/ class OrdersnumAction { private $_r; private $_host; private $_port; private $_passwd; priva…
参考: https://www.cnblogs.com/h-change/p/6699683.html 这里在数据库层面生成的,经测试确实不会重复. 附上自己修改后的版本,这里也可以预先生成一年的记录,过程就可以直接去读取.认为表里是一定有数据的. --表结 rq date num int 记录每一天生成了多个单号 用于生成流水的 GO CREATE PROC dbo.proc_CreateNewDH AS SET NOCOUNT ON DECLARE @TranCount INT=0, @Er…
返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支付系统的订单号,我们称为transactionId,其二为商户平台的订单号,我们通常称为out_trade_no,这两个号一般用来对账,在第三方支付平台你可以通过这两个订单号来查询订单的状态,而在商户自己的网站后台,也可以查询它的状态,一般地,transactionId由支付系统生成,并在回调时转回…