Как лучше сгенерировать уникальное название для загружаемых файлов

123 4
G
На сайте с 13.03.2014
Offline
4
2594

Хотелось на уровне бд это сделать.

Например как автоинкремент увеличивая значение предыдущего поля создает уникальное число.

Число не подходит, нужно создавать уникальное поле используя символы. Например как это делает вк, ютуб.

Желательно услышать мысли как это возможно реализовать сразу в бд(mysql) и потом сохранить файл с таким названием на сервере не составит труда.

На php опираясь на дату не подходит.

A
На сайте с 19.07.2010
Offline
130
#1


select md5(rand())
.............
lutskboy
На сайте с 22.11.2013
Offline
192
#2

я делал на uniqid/ каждому файлу присваивается уник значение. при том у меня загружалось картинок 20 подряд в считаные секунды, и каждой уник значение

дани мапов
На сайте с 06.09.2012
Offline
204
#3
lutskboy:
я делал на uniqid/ каждому файлу присваивается уник значение. при том у меня загружалось картинок 20 подряд в считаные секунды, и каждой уник значение

+1, тоже использую этот метод.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4

загружает пользователь?

md5((оригинальное название файла + mt_rand(0,10000)));

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
G
На сайте с 13.03.2014
Offline
4
#5
LEOnidUKG:
загружает пользователь?

да, в вашем примере и во всех примерах выше генерируется случайная строка. Вероятность генерации одинаковых полей возможна, насколько мала она не казалось. Файлов очень много и такая ошибка не допустима.

irisat
На сайте с 20.03.2012
Offline
197
#6
gims:
Вероятность генерации одинаковых полей возможна, насколько мала она не казалось. Файлов очень много и такая ошибка не допустима.

как вариант использовать в базе два поля для создания уникального названия

Порядковый номер (автоинкремент) плюс md5

Даже при возможно вероятном повторении md5, порядковый номер всегда уникален - в сочетании будет всегда уникальное значение...

LocalBitcoins (https://goo.gl/1Yxi8M) | Бот обменник (https://goo.gl/bPTaiF) - Покупка и продажа bitcoins! Биржа криптовалют №1 (https://goo.gl/6r6icz) - более 350 пар!
Mutabors
На сайте с 17.09.2012
Offline
127
#7

А в чем проблема то? Строите свою таблицу символов, которая будет участвовать в формировании имени файла. Допустим

0123456789abc...z получаете 33-ю систему исчисления. Дальше просто преобразовываете поле с автоинкрементом в эту систему исчисления и получаете уникальное имя файла, притом максимально короткое.

Самый продвинутый и надежный SSD хостинг рунета с изоляцией сайтов по 115 руб! (http://beget.ru/?id=332651) Контекстная реклама и продажи. Конкурентные и серые темы. Дорого! Не трать время на рутину! Ее сделают за копейки! (http://www.work-zilla.com?ref=143498)
A1
На сайте с 04.09.2013
Offline
18
#8
gims:
Вероятность генерации одинаковых полей возможна, насколько мала она не казалось. Файлов очень много и такая ошибка не допустима.

Если требуется обеспечить уникальность без проверки существования, то остаются только последовательности - автоинкремент и любые вариации на его базе (например, UUID).

G
На сайте с 13.03.2014
Offline
4
#9
Mutabors:
Допустим 0123456789abc...z получаете 33-ю систему исчисления. Дальше просто преобразовываете поле с автоинкрементом в эту систему исчисления и получаете уникальное имя файла, притом максимально короткое.

Я думаю в этом направлении. Только кто этим будет занимается? Если переложить все на php будут проблемы. Ведь нужно узнать у базы последнее значение, получить его инкремент и снова писать в бд название нового. Это не есть хорошо, поскольку в промежутке еще кто-то загрузит файл.

А вот инкремента строк в mysql не нашел..

domen4you
На сайте с 08.03.2013
Offline
53
#10

Интересно, как на ютубе названия генерятся, символов не так много, не боятся что повторятся)

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий