PHP生成唯一ID-php教程

资源魔 33 0

媒介

PHP uniqid()函数可用于天生没有反复的惟一标识符,该函数基于微秒级以后工夫戳。正在高并发或许距离时长极短(如轮回代码)的状况下,会呈现年夜量反复数据。即便应用了第二个参数,也会反复,最佳的计划是连系 md5 函数来天生惟一 ID。

应用函数

string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )

猎取一个带前缀、基于以后工夫微秒数的惟一 ID。prefix 有用的参数。例如:假如正在多台主机上可能正在同一微秒天生惟一 ID。prefix 为空,则前往的字符串长度为 13。moreentropy 为 TRUE,则前往的字符串长度为 23。moreentropy 假如设置为 TRUE,uniqid() 会正在前往的字符串末端添加额定的煽(应用 combined linear congruential generator)。使患上惟一 ID 更具惟一性。

PHP uniqid() 天生没有反复惟一标识办法一

这类办法会孕育发生年夜量的反复数据,运转以下 PHP 代码会数组索引是孕育发生的惟一标识,对应的元素值是该惟一标识反复的次数。

<?php
$units = array();for($i=0;$i<1000000;$i++){
    $units[] = uniqid();}
$values  = array_count_values($units);
$duplicates = [];foreach($values as $k=>$v){    if($v>1){
        $duplicates[$k]=$v;    }}
echo '<pre>';print_r($duplicates);
echo '</pre>';?>

PHP uniqid() 天生没有反复惟一标识办法二

这类办法天生的惟一标识反复量显著缩小。

<?php
$units = array();for($i=0;$i<1000000;$i++){
    $units[] = uniqid('',true);}
$values  = array_count_values($units);
$duplicates = [];foreach($values as $k=>$v){    if($v>1){
        $duplicates[$k]=$v;    }}
echo '<pre>';print_r($duplicates);
echo '</pre>';?>

PHP uniqid() 天生没有反复惟一标识办法三

这类办法天生的惟一标识中不反复。

<?php
$units = array();for($i=0;$i<1000000;$i++){
    $units[]=md5(uniqid(md5(microtime(true)),true));}
$values  = array_count_values($units);
$duplicates = [];foreach($values as $k=>$v){    if($v>1){
        $duplicates[$k]=$v;    }}
echo '<pre>';print_r($duplicates);
echo '</pre>';?>

PHP uniqid() 天生没有反复惟一标识办法四

应用 sessioncreateid()函数天生惟一标识符,通过实际测试发现,即便轮回挪用 sessioncreateid()一亿次,都不呈现太重复。php sessioncreateid()是 php 7.1 新增的函数,用来天生 session id,低版本无奈应用。

更多PHP相干常识,请拜访PHP中文网!

以上就是PHP天生惟一ID的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 生成id

抱歉,评论功能暂时关闭!