PHP函数unique_id(),在哪里可以看到函数的代码?

时间:2013-01-12 00:30:21

标签: php

我无法找到实际功能的代码,因为我对它如何创建id感兴趣,例如从哪里获得时间。

4 个答案:

答案 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)

答案 3 :(得分:0)

这可能有助于手册:http://php.net/manual/en/function.uniqid.php

它解释了唯一性取自时间(以微秒为单位)。