首頁 後端開發 php教程 php怎么生成不重复的卡号

php怎么生成不重复的卡号

Jun 13, 2016 am 10:07 AM
echo micro quot

php如何生成不重复的卡号
就像电话卡似的,全是数字,不能带字母。

最开始想到是:

N位随机数+数据库一个表的自增id+N位随机数

不想用数据库,想到一个唯一的标准是时间。用时间戳跟上几位随机数。

假如这样生成16的卡号:
时间戳10位+6位随机数 1316651745695261  


有时需要一个循环生成多个卡号,一个循环里前面的时间戳(基本是一样,除非循环里还有其它费时操作),后面的6位随机数无法保证唯一。想到结合microtime

循环调用microtime十次:

0.80717200 1316675664
0.80720600 1316675664
0.80721300 1316675664
0.80721900 1316675664
0.80722400 1316675664
0.80723000 1316675664
0.80723600 1316675664
0.80724100 1316675664
0.80724600 1316675664
0.80725200 1316675664
我想着是跟上位置在807172这里的数字便于区分开。代码:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->for($i=0;$imicrotime_float();         echo $time = microtime();         $arr = explode(" ",$time);         $micro = $arr[0]*100000000;         $micro_str = substr($micro."",0,6);         $timestamp = $arr[1];         echo "\t".$timestamp."".$micro_str;         echo '<br>';     }
登入後複製


暂时是本地windows下测试不会有重复的,会不会有比较牛X的服务器计算能力猛,微秒也重复了?

另外这样生成的卡号也不好一眼能看出个啥啥的。又不能随意截取其中的几位怕失去了唯一性。不知道有木有好的方法。
比如移动充值卡生成机制?位数少一点的,太多了,人都晕了。。。

------解决方案--------------------
微秒数重复的可能性不大,况且你后面还有随机数,如果你不确定还可以增加usleep(1)等待下。

但如果服务器修改时间你就没法保证微秒数不重复了。
------解决方案--------------------
如果只用 时间戳(可重复)+随机数(可重复) 这样的话,是不能保证100%没冲突的......
建议:时间戳(可能重复)+随机数(可能重复)+数据库id或其它唯一值(唯一) 才能得到不重复的结果。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

五個精選的Go語言開源項目,帶你探索科技世界 五個精選的Go語言開源項目,帶你探索科技世界 Jan 30, 2024 am 09:08 AM

五個精選的Go語言開源項目,帶你探索科技世界

Go語言開發必備:5個熱門框架推薦 Go語言開發必備:5個熱門框架推薦 Mar 24, 2024 pm 01:15 PM

Go語言開發必備:5個熱門框架推薦

micro是什麼數據線 micro是什麼數據線 Nov 22, 2022 pm 05:42 PM

micro是什麼數據線

使用Golang的Web框架Echo框架實現分散式任務調度 使用Golang的Web框架Echo框架實現分散式任務調度 Jun 24, 2023 am 11:49 AM

使用Golang的Web框架Echo框架實現分散式任務調度

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

Laravel開發:如何使用Laravel Echo和Pusher實現WebSockets通訊? Laravel開發:如何使用Laravel Echo和Pusher實現WebSockets通訊? Jun 13, 2023 pm 05:01 PM

Laravel開發:如何使用Laravel Echo和Pusher實現WebSockets通訊?

PHP中echo關鍵字的作用與使用方法詳解 PHP中echo關鍵字的作用與使用方法詳解 Jun 28, 2023 pm 08:12 PM

PHP中echo關鍵字的作用與使用方法詳解

探索Go語言框架:5個不容錯過的選擇! 探索Go語言框架:5個不容錯過的選擇! Feb 19, 2024 pm 02:29 PM

探索Go語言框架:5個不容錯過的選擇!

See all articles