我只是想知道,有没有人知道,PHP中的uniqid函数是否有一定的大小?如果是这样,它有多少串?我有点困惑,因为PHP手册说,当使用扩展熵时,uniqid长度为23个字符。但根据我的观察,它在26到28个字符之间变化。
答案 0 :(得分:2)
我无法确认这种行为:
php -r 'for($i = 0; $i < 1000; $i++) print strlen(uniqid("", true)) . "\n";'
使用PHP 5.3.x在OS X和Ubuntu上测试,每次迭代产生23次。
你使用的是什么os / PHP版本?
正如OP在他的问题的评论中指出的那样:省略前缀应该解决问题;)
再详细说明一下,可以在第79行查看PHP源代码:https://svn.php.net/viewvc/php/php-src/tags/php_5_3_8/ext/standard/uniqid.c?view=markup:
spprintf(&uniqid, 0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
如果没有提供前缀,并且查找php_combined_lcg
的定义,该定义返回带有一个前导小数的浮点数,uniqid
的输出应始终为23个字符长。