@daMage

Как на PHP сгенерировать уникальную строку?

Добрый день. Имеется база изображений на диске, каждому нужно дать уникальное имя, да так, чтобы без запросов к бд. Задача вполне стандартная, только вот все почему-то пишут про неустойчивость гпсч, про уникальность никто не писал. А для меня вариант, где повторное значение может вылезти с 0.0001% долей вероятности не устраивает. Смотрю доки по поводу функции uniqid:
"Получает уникальный идентификатор с префиксом, основанный на текущем времени в микросекундах. ". И что за время не понятно. Толи в пределах одного дня, то ли с начала 1970.

Поэтому два вопроса:
1. Функция возвращает количество миллисекунд с начала дня, то есть 1000 * 60 * 60 * 24 значений?
2. Возможно ли, если код запускается на неимоверно мощной машине, то два значения могут сгенерироваться в одну и ту же миллисекунду?
Если первое правда, то выходом будет добавить текущий день в качестве префикса и для красоты захешить?
Если второе тоже верно, то выходит нужно добавлять энтропии? Просвятите, пожалуйста. Что-то в последнее время начал уставать от всяких нюансов программирования.
  • Вопрос задан
  • 3695 просмотров
Решения вопроса 2
7workers
@7workers
для тех же самых целей использую PHP tempnam уже много лет, проблем не замечал.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
$name = md5_file(file_get_contents($old_name));
Заодно и дубли почистятся.
Плюс разбивка по каталогам получится более-менее равномерной.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А чем просто порядковый номер не устраивает? Или я чего-то не понял?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы