最近项目中要做礼包码生成,看了看网上的代码,可以使用php扩展unid

当然我这里并不是用的unid,而是使用的php自带的uniqid,人狠话不多。看代码

  


/**
 * 生成礼包接口 100W数据同时生成不重复
 * @return string
 */
function sp_gm_get_gift_code($number) {
    for ($i=0;$i<$number;$i++){
        $uniqid = uniqid('gm',true);
        $param_string = $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'].$_SERVER['SERVER_SOFTWARE'].time().rand().$uniqid;
        $sha1 = sha1($param_string);
        for(
            $a=$sha1,
            $s = '0123456789abcdefghijklmnopqrstuvwxyz',
            $d = '',
            $f = 0;
            $f < 12;
            $g = ord( $a[ $f ] ),
            $d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
            $f++
        );
        yield $d;
    }
}

  重新优化了一下

调用方法

       $result=sp_gm_get_gift_code($code_num);
            foreach($result as $key => $value){
               echo $value;
            }

  

千万数据没测试,反正百万数据随便测试不会重复,12位兑换码也符合游戏或者其他场景中使用!

  有用就用,没用别喷

最新文章

  1. ArcGIS Engine开发之旅09--几何对象和空间参考
  2. eclipse启动tomcat时设置端口
  3. 批处理测试局域网网络连通性ping1-255
  4. ios 字典转模型
  5. Demo学习: CustomException
  6. JAVA多线程实现简单的点名系统
  7. 【nodejs学习】0.nodejs学习第一天
  8. 解决gradle:download特别慢的问题
  9. nodejs爬虫系统
  10. 按钮(Buton)组价的功能和用法
  11. 运维之linux基础知识(一)
  12. 单源最短路径---Bellman-Ford算法
  13. java开发笔记——表映射实体类代码示例
  14. centos7设置rc.local开机执行命令
  15. Ubuntu系统实现将Jupyter notebook项目发布到GitHub
  16. Spring IOC(四)总结升华篇
  17. HTML中元素的定位方式
  18. Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M
  19. js数据类型--对象&amp;数组
  20. 使用fork并发处理多个client的请求和对等通信p2p

热门文章

  1. navisworks安装未完成,某些产品无法安装的解决方法
  2. 3DMAX安装未完成,某些产品无法安装的解决方法
  3. MOOC(2)-Django开发get、post请求,返回json数据
  4. js-dom运动我有废话要说
  5. ACID原则
  6. [转载] 自定义标签,jsp调用java类
  7. Beautiful Soup的用法(五):select的使用
  8. [转]win7 64位下完美安装64位oracle 11g
  9. Angular4&mdash;&mdash;7.表单处理
  10. 为什么 generator 忽略第一次 next 调用的参数值呢?