백엔드 개발 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

기술 세계를 탐험할 수 있도록 Go 언어 오픈 소스 프로젝트 5개를 선택했습니다. 기술 세계를 탐험할 수 있도록 Go 언어 오픈 소스 프로젝트 5개를 선택했습니다. Jan 30, 2024 am 09:08 AM

기술 세계를 탐험할 수 있도록 Go 언어 오픈 소스 프로젝트 5개를 선택했습니다.

Go 언어 개발 필수 사항: 인기 있는 프레임워크 권장 사항 5가지 Go 언어 개발 필수 사항: 인기 있는 프레임워크 권장 사항 5가지 Mar 24, 2024 pm 01:15 PM

Go 언어 개발 필수 사항: 인기 있는 프레임워크 권장 사항 5가지

마이크로 데이터 케이블은 무엇입니까? 마이크로 데이터 케이블은 무엇입니까? Nov 22, 2022 pm 05:42 PM

마이크로 데이터 케이블은 무엇입니까?

Golang의 웹 프레임워크인 Echo 프레임워크를 사용하여 분산 작업 스케줄링 구현 Golang의 웹 프레임워크인 Echo 프레임워크를 사용하여 분산 작업 스케줄링 구현 Jun 24, 2023 am 11:49 AM

Golang의 웹 프레임워크인 Echo 프레임워크를 사용하여 분산 작업 스케줄링 구현

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

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

Laravel 개발: Laravel Echo 및 Pusher를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까? Laravel 개발: Laravel Echo 및 Pusher를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까? Jun 13, 2023 pm 05:01 PM

Laravel 개발: Laravel Echo 및 Pusher를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?

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