2010-10-05 2 views
1

Как можно генерировать буквенно-цифровые идентификаторы на PHP или AS3 и т. Д. Вместо классического автоматического увеличения числового идентификатора.Генерация буквенно-цифровых идентификаторов (уникальных строк)

YouTube использует это для своих идентификаторов видео, например. Facebook генерирует длинные буквенно-цифровые строки для загруженных имен изображений и так далее.

EDIT: Это не так, как я генерировать строки сами по себе, но как я могу генерировать уникальные из них, как в столбце auto_increment в столбце MySQL будет.

+0

Дубликат http://stackoverflow.com/question s/2288174/what-is-the-best-way-to-create-random-mysql-id-using-php, http://stackoverflow.com/questions/1041509/php-best-random-numbers, http: //stackoverflow.com/questions/2288174/what-is-the-best-way-to-create-random-mysql-id-using-php и более. – Lekensteyn

ответ

1

В PHP вы можете использовать base_convert для изменения базы данных большего размера (до 36, формат будет 0-9a-z, с равным 10 и т. Д.).

С уважением, Алин

1

Чтобы гарантировать уникальность вы должны придумать с удостоверением на стороне сервера. Тогда это может быть, например, ячейка MySQL, которую вы используете для получения следующего номера. Если у вас есть 64-битное число, вы можете также сгенерировать номер при загрузке страницы независимо от того, нужен ли в конце уникальный идентификатор или нет, если вам нужно, чтобы он всегда был встроен в файл JavaScript. Затем, если пользователь, например, сохраняет данные, вы можете сохранить отправленный вместе с ним идентификатор. Вам не нужно сохранять неиспользуемые идентификационные номера до тех пор, пока вы убедитесь, что счетчик надежно увеличивается, поэтому при использовании MySQL для этого вам просто нужно, чтобы одна ячейка всегда увеличивалась в дополнение к фактическим данным, которые вы сохраняете.

С 64 битами вы никогда не закончите идентификаторы, и вы можете изменить порядок бит, если хотите, чтобы он был менее предсказуемым, каким будет следующий идентификатор. Если требуется какая-либо безопасность, вы должны больше взглянуть на сопоставление 1: 1 из числа работающих в менее предсказуемые.

Что касается того, где сохранить инкрементное число, это может быть строка в любой базе данных SQL или простой текстовый файл, если вы обрабатываете блокировку, или если у вас есть программа, которая всегда работает на сервере, вы можете общаться с ней, используя любой тип IPC для получения новых номеров. Просто убедитесь, что перезагрузка сервера будет продолжена, по крайней мере, там, где она была оставлена.

1

Лучшим способом уникальности является объединение текущего времени/даты в миллисекундах со случайным числом. Взгляните на UUID «s

http://en.wikipedia.org/wiki/Universally_unique_identifier

они не похожи на струнах на YouTube, но они вызывающе уникальный

1

AS3

import mx.utils.UIDUtil; 
var uuid:String = UIDUtil.createUID() 

PHP

$unique = md5(uniqid()); // 32 characters long 
$unique = sha1(uniqid()); // 40 characters long 
Смежные вопросы