23 lines
663 B
PHP
23 lines
663 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Service;
|
|
|
|
class RequestIdGenerator
|
|
{
|
|
private const TIMESTAMP_LENGTH = 10;
|
|
private const RANDOM_LENGTH = 8;
|
|
|
|
public function generateBaseId(): string
|
|
{
|
|
$timestampMs = (int) floor(microtime(true) * 1000);
|
|
$timestampPart = str_pad(base_convert((string) $timestampMs, 10, 36), self::TIMESTAMP_LENGTH, '0', STR_PAD_LEFT);
|
|
|
|
$maxRandomValue = (36 ** self::RANDOM_LENGTH) - 1;
|
|
$randomPart = str_pad(base_convert((string) random_int(0, $maxRandomValue), 10, 36), self::RANDOM_LENGTH, '0', STR_PAD_LEFT);
|
|
|
|
return sprintf('r-%s-%s', $timestampPart, $randomPart);
|
|
}
|
|
}
|