0

実際の関数のコードは、IDの作成方法、たとえば、どこから時間を取得するかに興味があるため、見つかりませんでした。

4

4 に答える 4

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);
于 2013-01-12T00:44:23.333 に答える
2

どの機能?unique_id()PHPに関数があるとは思いません。のコードuniqid()ext/standard/uniqid.cにあります。

リポジトリを絞り込むと、Github でこのようなものを検索できます。たとえば、repo:php/php-src uniqidを検索すると、php リポジトリで uniqid への参照が見つかります。

この前の質問への回答に、この例と他の Github 検索構文があります。

于 2013-01-12T00:43:58.300 に答える
1

uniqid() のソース コードは https://github.com/php/php-src/blob/master/ext/standard/uniqid.cにあります。

于 2013-01-12T00:40:17.200 に答える
0

これはマニュアルから役立つかもしれません:http://php.net/manual/en/function.uniqid.php

一意性はマイクロ秒単位の時間から取得されることを説明しています。

于 2013-01-12T00:31:56.173 に答える