| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Генерировать String с длиной 6 |
| Автор: Muerto 25.1.2011, 16:18 |
| Хотелось бы генерировать String длиной 6, что бы был уникален и не пришлось сверять с базой... Должен состоять из крупных и маленьких букв... Есть идея присвоить каждой цифре в timestamp букву можно будет что то уникальное таки даже без рандомации выдавать, что думайте? Надо будет продумать конечно ибо длину я хочу короткую так что это будет алгоритм который на пару цифр наверно даже свою букву давать будет... Так же ещё одна проблема это что в базе данных поиск идет как бы не case sensitive поэтому если aaaaaa или AAAAAA по сути может найти по запросу aaaaaa Эти обе записи, если ставить varchar (надо binary?)и тп... но с другой стороны можно в md5 катать... но это уже мой тупизм что я что то упускаю, не хотелось бы конвертировать в md5 |
| Автор: skyboy 25.1.2011, 16:32 |
в течение одной секунды вполне могут быть несколько запросов. проще rand() + преобразование из десятичной системы в, скажем, 36-ричную(для записи используется 26 букв и 10 цифр). итого в 6 символов умещаются 36^6 ~ 2.2 млрд комбинаций а чтоб обеспечить уникальность, поставить в БД уникальный индекс. и только если вставка обломилась(такое значение уже есть) - генерировать новое значение. |
| Автор: Muerto 25.1.2011, 16:53 |
| 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() |
| Автор: skyboy 25.1.2011, 17:33 |
| http://www.php.net/manual/en/function.uniqid.php#96898 |