欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

uniqid 有大用

shiping1 的头像

<?php
//uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
//prefix    可选。为 ID 规定前缀。如果两个脚本在相同的微妙生成 ID,该参数很有用。
//more_entropy    可选。规定位于返回值末尾的更多的熵。
//
//说明
//
//如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。
//
//如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。
//生成一个随机字符串
$formToken             = uniqid();

?>


<?php
// no prefix
$token = md5(uniqid());

// better, difficult to guess
//比较佳的唯一
$better_token = md5(uniqid(rand(), true));

//更加佳的唯一
$better_token = md5(uniqid(rand(), true).mt_rand(1,1000000));


$id = uniqid();
echo $id;
echo "\r\n";
$timestamp = hexdec(substr($id,0,8));
echo date('Y-m-d H:i:s', $timestamp);



uniqid函数的原型:
function _uniqid($prefix=''){
    list($micro,$sec) = explode(" " ,microtime());
    $msec =  ($micro*1000000.00)%0x100000;
    return sprintf("%s%x%05x",$prefix,$sec,$msec);
}

但在高并发下,uniqid函数偶尔也会出现重复的ID,这也就是说光用uniqid是不够的,需要拼接一些别的字符,如:使用rand()生成几位随机数再做拼接。


//比较佳的唯一
uniqid(rand(),true);


采用PHP函数uniqid生成一个唯一的ID

helloweba.com 作者:月光光 时间:2011-01-23 12:17 标签: php 函数 

 

生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠。

生成的唯一ID默认返回的字符串有 13 个字符串长,如果不定义唯一ID的前缀,最多可返回23个字符串长,如果再结合md5()函数,生成的唯一ID可靠性将更高,这种生成的ID比随机性的ID 最大优点在于可实现排序,特别是一些需要存储在数据库中的值。

一,函数原型

string uniqid ( [string prefix [, bool more_entropy]] )

可定义唯一ID的前缀与长度

二,版本兼容

PHP 3, PHP 4, PHP 5

三,函数基础用法与实例

1,生成一个唯一ID

<?php  
echo uniqid();  
?> 

2,结合md5()函数生成一个唯一ID

<?php  
echo md5(uniqid());  
?> 

输出:dfbc5c8c6438de075da28b3c8a413fd0

3,生成多个唯一ID,由于是以微秒计

<?php  
echo uniqid();  
echo uniqid();  
echo uniqid();  
?> 

输出:

4bfd0e375396b

4bfd0e3753981

4bfd0e3753983

由生成的结果来看,唯一ID之间具有可排序性的。

使用uniqid()函数生成唯一ID既能用于生成临时性ID也能用于生成永久性唯一ID(存储数据库),具体请参与PHP手册。

声明:本文为原创文章,helloweba.com和作者拥有版权,如需转载,请注明来源于helloweba.com并保留原文链接:http://www.helloweba.com/view-blog-107.html


来自 http://www.helloweba.com/view-blog-107.html
普通分类: