Я работаю над способом создания уникальных идентификаторов GID и хотел бы получить мнение по поводу следующего кода. Идея заключается в том, что он должен создать идентификатор, уникальный для определенного IP-адреса, в течение 1 секунды (помогает предотвратить многократные публикации) и быть как можно более коротким.
Вот код в PHP:
$gid = base_convert(dechex(str_replace(".", "", $_SERVER['REMOTE_ADDR'])) . dechex(time()), 10, 36);
Это производит идентификаторы, такие как эти:
qdkgzfvim
4ge6gesv
cztme7e4t
45qqcvq
Любое мнение относительно того, будет ли это производить уникальные идентификаторы? Могут ли быть столкновения? Должен ли я дополнить числа 0?
Запустите тест:
$part2 = dechex(time());
echo '<br/>' . $part2;
echo '<br/>' . base_convert($part2, 10, 36);
echo '<br/>' . base_convert(base_convert($part2, 10, 36), 36, 10);
Производит что-то вроде:
5435a0e0
bnd8
543500
Это потеря данных. Так что это не обратимо, поэтому он может потерять предполагаемую уникальность.
Других решений пока нет …