我无法找到实际功能的代码,因为我对它如何创建id感兴趣,例如从哪里获得时间。
答案 0 :(得分:3)
如果您仍然对源代码感兴趣,那么它位于公共git存储库中: https://github.com/php/php-src/blob/master/ext/standard/uniqid.c
gettimeofday((struct timeval *) &tv, (struct timezone *) NULL);
sec = (int) tv.tv_sec;
usec = (int) (tv.tv_usec % 0x100000);
/* The max value usec can have is 0xF423F, so we use only five hex
* digits for usecs.
*/
if (more_entropy) {
spprintf(&uniqid, 0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
} else {
spprintf(&uniqid, 0, "%s%08x%05x", prefix, sec, usec);
}
RETURN_STRING(uniqid, 0);
答案 1 :(得分:2)
哪个功能?我不相信PHP中有unique_id()
函数。 uniqid()
的代码位于ext/standard/uniqid.c。
您可以通过缩小存储库来在Github上搜索此类事物。例如,搜索repo:php/php-src uniqid将在php repo中找到对uniqid的引用。
the answer to this earlier question中有一个例子和其他Github搜索语法。
答案 2 :(得分:1)
你会找到uniqid()的源代码 https://github.com/php/php-src/blob/master/ext/standard/uniqid.c
答案 3 :(得分:0)
这可能有助于手册:http://php.net/manual/en/function.uniqid.php
它解释了唯一性取自时间(以微秒为单位)。