PHP uniqid()函数可用于天生没有反复的惟一标识符,该函数基于微秒级以后工夫戳。正在高并发或许距离时长极短(如轮回代码)的状况下,会呈现年夜量反复数据。即便应用了第二个参数,也会反复,最佳的计划是连系md5函数来天生惟一ID。
阐明
string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )
猎取一个带前缀、基于以后工夫微秒数的惟一ID。
参数
prefix
有用的参数。例如:假如正在多台主机上可能正在同一微秒天生惟一ID。
prefix为空,则前往的字符串长度为13。more_entropy 为 TRUE,则前往的字符串长度为23。
more_entropy
假如设置为 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() 天生没有反复惟一标识办法四
应用session_create_id()函数天生惟一标识符,通过实际测试发现,即便轮回挪用session_create_id()一亿次,都不呈现太重复。
php session_create_id()是php 7.1新增的函数,用来天生session id,低版本无奈应用。
以上内容仅供参考!
保举视频教程:PHP视频教程
以上就是php主动天生没有反复的id的具体内容,更多请存眷资源魔其它相干文章!
标签: php id php开发教程 php开发资料 php开发自学 不重复 自动生成
抱歉,评论功能暂时关闭!