媒介
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
抱歉,评论功能暂时关闭!