Class for getting statistically unique IDs.
More...
|
static | newRawUUIDv1 () |
| Return an RFC4122 compliant v1 UUID.
|
|
static | newRawUUIDv4 ( $flags=0) |
| Return an RFC4122 compliant v4 UUID.
|
|
static | newSequentialPerNodeID ( $bucket, $bits=48, $flags=0) |
| Return an ID that is sequential only for this node and bucket.
|
|
static | newSequentialPerNodeIDs ( $bucket, $bits, $count, $flags=0) |
| Return IDs that are sequential only for this node and bucket.
|
|
static | newTimestampedUID128 ( $base=10) |
| Get a statistically unique 128-bit unsigned integer ID string.
|
|
static | newTimestampedUID88 ( $base=10) |
| Get a statistically unique 88-bit unsigned integer ID string.
|
|
static | newUUIDv1 () |
| Return an RFC4122 compliant v1 UUID.
|
|
static | newUUIDv4 ( $flags=0) |
| Return an RFC4122 compliant v4 UUID.
|
|
static | unitTestTearDown () |
| Cleanup resources when tearing down after a unit test.
|
|
|
| __construct () |
|
| getSequentialPerNodeIDs ( $bucket, $bits, $count, $flags) |
| Return IDs that are sequential only for this node and bucket.
|
|
| getTimeAndDelay ( $lockFile, $clockSeqSize, $counterSize, $offsetSize) |
| Get a (time,counter,clock sequence) where (time,counter) is higher than any previous (time,counter) value for the given clock sequence.
|
|
| getTimestampedID128 (array $info) |
|
| getTimestampedID88 (array $info) |
|
| getUUIDv1 (array $info) |
|
| intervalsSinceGregorianBinary (array $time, $delta=0) |
|
| millisecondsSinceEpochBinary (array $time) |
|
| timeWaitUntil ( $time) |
| Wait till the current timestamp reaches $time and return the current timestamp.
|
|
Class for getting statistically unique IDs.
- Since
- 1.21
Definition at line 30 of file UIDGenerator.php.
◆ __construct()
UIDGenerator::__construct |
( |
| ) |
|
|
protected |
◆ __destruct()
UIDGenerator::__destruct |
( |
| ) |
|
◆ deleteCacheFiles()
UIDGenerator::deleteCacheFiles |
( |
| ) |
|
|
private |
Delete all cache files that have been created.
This is a cleanup method primarily meant to be used from unit tests to avoid poluting the local filesystem. If used outside of a unit test environment it should be used with caution as it may destroy state saved in the files.
- See also
- unitTestTearDown
- Since
- 1.23
Definition at line 645 of file UIDGenerator.php.
References $path.
◆ getSequentialPerNodeIDs()
UIDGenerator::getSequentialPerNodeIDs |
( |
|
$bucket, |
|
|
|
$bits, |
|
|
|
$count, |
|
|
|
$flags |
|
) |
| |
|
protected |
◆ getTimeAndDelay()
UIDGenerator::getTimeAndDelay |
( |
|
$lockFile, |
|
|
|
$clockSeqSize, |
|
|
|
$counterSize, |
|
|
|
$offsetSize |
|
) |
| |
|
protected |
Get a (time,counter,clock sequence) where (time,counter) is higher than any previous (time,counter) value for the given clock sequence.
This is useful for making UIDs sequential on a per-node bases.
- Parameters
-
string | $lockFile | Name of a local lock file |
int | $clockSeqSize | The number of possible clock sequence values |
int | $counterSize | The number of possible counter values |
int | $offsetSize | The number of possible offset values |
- Returns
- array Array with the following keys:
- array 'time': array of seconds int and milliseconds int.
- int 'counter'.
- int 'clkSeq'.
- int 'offset': .
- int 'offsetCounter'.
- Exceptions
-
Definition at line 440 of file UIDGenerator.php.
References timeWaitUntil().
◆ getTimestampedID128()
UIDGenerator::getTimestampedID128 |
( |
array |
$info | ) |
|
|
protected |
◆ getTimestampedID88()
UIDGenerator::getTimestampedID88 |
( |
array |
$info | ) |
|
|
protected |
◆ getUUIDv1()
UIDGenerator::getUUIDv1 |
( |
array |
$info | ) |
|
|
protected |
◆ intervalsSinceGregorianBinary()
UIDGenerator::intervalsSinceGregorianBinary |
( |
array |
$time, |
|
|
|
$delta = 0 |
|
) |
| |
|
protected |
- Parameters
-
array | $time | Array of second and millisecond integers |
int | $delta | Number of intervals to add on to the timestamp |
- Returns
- string 60 bits of "100ns intervals since 15 October 1582" (rolls over in 3400)
- Exceptions
-
Definition at line 609 of file UIDGenerator.php.
Referenced by getUUIDv1().
◆ millisecondsSinceEpochBinary()
UIDGenerator::millisecondsSinceEpochBinary |
( |
array |
$time | ) |
|
|
protected |
◆ newRawUUIDv1()
static UIDGenerator::newRawUUIDv1 |
( |
| ) |
|
|
static |
Return an RFC4122 compliant v1 UUID.
- Returns
- string 32 hex characters with no hyphens
- Exceptions
-
- Since
- 1.27
Definition at line 234 of file UIDGenerator.php.
◆ newRawUUIDv4()
static UIDGenerator::newRawUUIDv4 |
( |
|
$flags = 0 | ) |
|
|
static |
◆ newSequentialPerNodeID()
static UIDGenerator::newSequentialPerNodeID |
( |
|
$bucket, |
|
|
|
$bits = 48 , |
|
|
|
$flags = 0 |
|
) |
| |
|
static |
Return an ID that is sequential only for this node and bucket.
These IDs are suitable for per-host sequence numbers, e.g. for some packet protocols. If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
- Parameters
-
string | $bucket | Arbitrary bucket name (should be ASCII) |
int | $bits | Bit size (<=48) of resulting numbers before wrap-around |
int | $flags | (supports UIDGenerator::QUICK_VOLATILE) |
- Returns
- float Integer value as float
- Since
- 1.23
Definition at line 329 of file UIDGenerator.php.
◆ newSequentialPerNodeIDs()
static UIDGenerator::newSequentialPerNodeIDs |
( |
|
$bucket, |
|
|
|
$bits, |
|
|
|
$count, |
|
|
|
$flags = 0 |
|
) |
| |
|
static |
◆ newTimestampedUID128()
static UIDGenerator::newTimestampedUID128 |
( |
|
$base = 10 | ) |
|
|
static |
Get a statistically unique 128-bit unsigned integer ID string.
The bits of the UID are prefixed with the time (down to the millisecond).
These IDs are suitable as globally unique IDs, without any enforced uniqueness. New rows almost always have higher UIDs, which makes B-TREE updates on INSERT fast. They can also be stored as "DECIMAL(39) UNSIGNED" or BINARY(16) in MySQL.
UID generation is serialized on each server (as the node ID is for the whole machine).
- Parameters
-
int | $base | Specifies a base other than 10 |
- Returns
- string Number
- Exceptions
-
Definition at line 170 of file UIDGenerator.php.
References $base, and singleton().
Referenced by ExternalStoreMwstore\store().
◆ newTimestampedUID88()
static UIDGenerator::newTimestampedUID88 |
( |
|
$base = 10 | ) |
|
|
static |
Get a statistically unique 88-bit unsigned integer ID string.
The bits of the UID are prefixed with the time (down to the millisecond).
These IDs are suitable as values for the shard key of distributed data. If a column uses these as values, it should be declared UNIQUE to handle collisions. New rows almost always have higher UIDs, which makes B-TREE updates on INSERT fast. They can also be stored "DECIMAL(27) UNSIGNED" or BINARY(11) in MySQL.
UID generation is serialized on each server (as the node ID is for the whole machine).
- Parameters
-
int | $base | Specifies a base other than 10 |
- Returns
- string Number
- Exceptions
-
Definition at line 118 of file UIDGenerator.php.
References $base, and singleton().
◆ newUUIDv1()
static UIDGenerator::newUUIDv1 |
( |
| ) |
|
|
static |
◆ newUUIDv4()
static UIDGenerator::newUUIDv4 |
( |
|
$flags = 0 | ) |
|
|
static |
◆ singleton()
static UIDGenerator::singleton |
( |
| ) |
|
|
staticprotected |
◆ timeWaitUntil()
UIDGenerator::timeWaitUntil |
( |
|
$time | ) |
|
|
protected |
Wait till the current timestamp reaches $time and return the current timestamp.
This returns false if it would have to wait more than 10ms.
- Parameters
-
- Returns
- int|bool Timestamp or false
Definition at line 573 of file UIDGenerator.php.
Referenced by getTimeAndDelay().
◆ unitTestTearDown()
static UIDGenerator::unitTestTearDown |
( |
| ) |
|
|
static |
Cleanup resources when tearing down after a unit test.
This is a cleanup method primarily meant to be used from unit tests to avoid poluting the local filesystem. If used outside of a unit test environment it should be used with caution as it may destroy state saved in the files.
Definition at line 674 of file UIDGenerator.php.
References singleton().
◆ $fileHandles
array UIDGenerator::$fileHandles = [] |
|
protected |
◆ $instance
◆ $lockFile128
string UIDGenerator::$lockFile128 |
|
protected |
◆ $lockFile88
string UIDGenerator::$lockFile88 |
|
protected |
◆ $lockFileUUID
string UIDGenerator::$lockFileUUID |
|
protected |
◆ $nodeId32
string UIDGenerator::$nodeId32 |
|
protected |
◆ $nodeId48
string UIDGenerator::$nodeId48 |
|
protected |
◆ $nodeIdFile
string UIDGenerator::$nodeIdFile |
|
protected |
◆ QUICK_RAND
const UIDGenerator::QUICK_RAND = 1 |
◆ QUICK_VOLATILE
const UIDGenerator::QUICK_VOLATILE = 2 |
The documentation for this class was generated from the following file: