PHP 中iVBOR是什么函数生成的
1个回答
展开全部
在PHP编程中,我们有时候在高并发的时候生成很多个不同的ID,用于标识一些东西。虽然有很多方法,可以实现这一过程,不过PHP还是给我们提供了一个很好的函数,用于生成不同的唯一的ID
PHP中的uniqid()函数
函数定义
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
语法
uniqid(prefix,more_entropy)
注释:
prefix可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。
more_entropy 可选。规定位于返回值末尾的更多的熵。
举例说明
利用uniqid()生成一个ID
<?php//XXXXX
echo '输出一个唯一的ID标示符:'.uniqid();?>
echo '输出一个唯一的CHAODIQUAN.COM 标示符:'.uniqid();?>
利用for循环与uniqid()函数,连续生成10个不同的ID标识
代码
<?php//XXXXXXfor($i=1;$i<11;$i++){
echo '输出第'.$i.'个标示符:'.uniqid().'<br/>';}?>
对于uniqid()函数补充
如果我们单纯使用 uniqid()
这个方法,不带任何参数的话,这个方法只能保证单个进程,在同一个毫秒内是唯一的。如果使用uniqid("", true)。
带了一个墒值,自身已经有一个随机的方式能保证生成的id的随机性了。但是由于线性同余是比较简单的生成随机数的算法,随机性有可能还不够,所以,网上流传的一种更随机数值的方式是:
uniqid(mt_rand(), true)
其中
mt_rand() 生成随机数就不是使用线性同余生成随机数的方式了,而是使用 Mersenne Twister Random Number
Generator (梅森旋转算法)。换句话说,上面这个 id 由两种随机算法 +
时间戳生成。基本上,这个算法在很大程度上能保证唯一性了(如果要问冲突率的话,估计只有数学系学生能研究出来了...)。
上面的这个给出的id会有一个点号,而且长度并不是128bit。如果希望生成uuid,就需要一个hash,不管是md5,sha1 都是可以选择的。所以网上又有一种生成唯一码的方式。
md5(uniqid(mt_rand(), true))
复制
但是,本质上,这两种方式的随机性是相等的。
PHP中的uniqid()函数
函数定义
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
语法
uniqid(prefix,more_entropy)
注释:
prefix可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。
more_entropy 可选。规定位于返回值末尾的更多的熵。
举例说明
利用uniqid()生成一个ID
<?php//XXXXX
echo '输出一个唯一的ID标示符:'.uniqid();?>
echo '输出一个唯一的CHAODIQUAN.COM 标示符:'.uniqid();?>
利用for循环与uniqid()函数,连续生成10个不同的ID标识
代码
<?php//XXXXXXfor($i=1;$i<11;$i++){
echo '输出第'.$i.'个标示符:'.uniqid().'<br/>';}?>
对于uniqid()函数补充
如果我们单纯使用 uniqid()
这个方法,不带任何参数的话,这个方法只能保证单个进程,在同一个毫秒内是唯一的。如果使用uniqid("", true)。
带了一个墒值,自身已经有一个随机的方式能保证生成的id的随机性了。但是由于线性同余是比较简单的生成随机数的算法,随机性有可能还不够,所以,网上流传的一种更随机数值的方式是:
uniqid(mt_rand(), true)
其中
mt_rand() 生成随机数就不是使用线性同余生成随机数的方式了,而是使用 Mersenne Twister Random Number
Generator (梅森旋转算法)。换句话说,上面这个 id 由两种随机算法 +
时间戳生成。基本上,这个算法在很大程度上能保证唯一性了(如果要问冲突率的话,估计只有数学系学生能研究出来了...)。
上面的这个给出的id会有一个点号,而且长度并不是128bit。如果希望生成uuid,就需要一个hash,不管是md5,sha1 都是可以选择的。所以网上又有一种生成唯一码的方式。
md5(uniqid(mt_rand(), true))
复制
但是,本质上,这两种方式的随机性是相等的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询