![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Хотелось бы генерировать String длиной 6, что бы был уникален и не пришлось сверять с базой...
Должен состоять из крупных и маленьких букв... Есть идея присвоить каждой цифре в timestamp букву можно будет что то уникальное таки даже без рандомации выдавать, что думайте? Надо будет продумать конечно ибо длину я хочу короткую так что это будет алгоритм который на пару цифр наверно даже свою букву давать будет... Так же ещё одна проблема это что в базе данных поиск идет как бы не case sensitive поэтому если aaaaaa или AAAAAA по сути может найти по запросу aaaaaa Эти обе записи, если ставить varchar (надо binary?)и тп... но с другой стороны можно в md5 катать... но это уже мой тупизм что я что то упускаю, не хотелось бы конвертировать в md5 Это сообщение отредактировал(а) Muerto - 25.1.2011, 16:31 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
в течение одной секунды вполне могут быть несколько запросов. проще rand() + преобразование из десятичной системы в, скажем, 36-ричную(для записи используется 26 букв и 10 цифр). итого в 6 символов умещаются 36^6 ~ 2.2 млрд комбинаций а чтоб обеспечить уникальность, поставить в БД уникальный индекс. и только если вставка обломилась(такое значение уже есть) - генерировать новое значение. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
skyboy, Ну можно брать в учет микро секунды
Если есть хоть какой то шанс что в базе оно есть, меня это не устраивает, ибо я тогда могу генерировать пока такого не будет в базе ( и я уверен что больше раза за тысячу запросов такого не будет), а эт не интересно Сейчас дела есть, позже возьму придумаю как таки micro time превратить в уникальный String длиной 6 Что то я сейчас в сторону хекса децималки подумал , точно ща не помню какая длинна у timstamp + micro но допустим 14246547987654323 будет 329 D28 F01 46 6B 4 А дальше уже какие то вычисления сделать , и будет то что нужно Хотя не, надо что то посложней брать мне в помощь http://www.php.net/manual/en/function.base-convert.php и ваш совет Но может и тупо игра с uniqid() Это сообщение отредактировал(а) Muerto - 25.1.2011, 17:29 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |