Можно ли использовать PHP random_int для уникального целочисленного генератора (разумно) - PullRequest
0 голосов
/ 20 октября 2018

У меня есть приложение, для которого потребуется генерировать около 200K идентификаторов партии каждый год.

Сначала я подумал об использовании uniqid() для генерации идентификаторов партии, но это будет строка, которая займетзанимает огромное место в базе данных, по сравнению с целым числом.

Следовательно, мой вопрос заключается в том, будет ли random_int(1, 2147483647) использоваться для создания уникальных чисел?

К вашему сведению, как правило, 2147483647 равно PHP_INT_MAX.

1 Ответ

0 голосов
/ 21 октября 2018

Как упомянул @Alex Howansky, при использовании uniquid().

увеличение размера базы данных будет очень незначительным, если ваше требование близко к 100% уникальных идентификаторов, то random 4-битные целые числа простоне быть уникальным.Потребуются дополнительные биты, чтобы они были случайными и уникальными.

Я использую функцию ниже в своих приложениях.Это имеет более высокую вероятность быть уникальным.Он использует 22 байта вместо 13 на uniquid()

function getUniqueId(){
  // will return 22 characters Unique string eg "5bcc2342652c2630171474"
  return str_replace('.', '', uniqid('',true));
}

Если вам все еще нужно использовать только целое число.Затем, как предлагает Лоуренс Чероне, вы должны использовать автоинкремент.

...