UUID

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

UUID

Сообщение AlexSergeev1990 »

Я новичок в Yii2 ....вопрос по генерации уникального id...т.е. UID ...если заложенные функции в фраемворке для генерации красивого UID из цифр и букв или же делать это на стороне сервера Mysql?
Я хочу сделать генерацию по ФИО и дате рождения и current time. Покажите на примере если есть такая функция пожалуйста! :?:
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

uuid uid уникальный id по фио, дата рождения, time - определитесь уже.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: UUID

Сообщение Nex-Otaku »

У меня вот такое расширение для генерации UUID.

https://packagist.org/packages/nex-otak ... uuid-tools

Использовать либо так

Код: Выделить всё

$newUuid = nex_otaku\uuid\helpers\uuid::binUuid();
либо подключить бихевиор UuidBehavior из того же пакета.

P.S. Поле в БД для хранения UUID лучше всего сделать BINARY(16).
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: UUID

Сообщение AlexSergeev1990 »

zelenin писал(а): 2017.07.22, 19:29 uuid uid уникальный id по фио, дата рождения, time - определитесь уже.
я хочу получить uuid=ФИО+ДатаРождения+СurentTimeSnap.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: UUID

Сообщение Nex-Otaku »

Чем рандомный-то не устраивает?

Ну сделай тогда просто хеш, например

Код: Выделить всё

$uuid = md5($fio . $birthDate . $timestamp);
Фриз
Сообщения: 85
Зарегистрирован: 2012.01.20, 17:23

Re: UUID

Сообщение Фриз »

Использую вот это решение https://github.com/ramsey/uuid

Код: Выделить всё

// Generate a version 4 (random) UUID object
$uuid4 = Uuid::uuid4();
echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

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

PS всем кто кидает ссылки на либы, генерирующие uuid4, посчитайте сколько весит либа, сколько имеет строк кода, какой выхлоп вы получаете, и сравните с кодом, достаточным для генерации:

Код: Выделить всё

        $bytes = random_bytes(16);
        $bytes[6] = chr((ord($bytes[6]) & 0x0f) | 0x40);
        $bytes[8] = chr((ord($bytes[8]) & 0x3f) | 0x80);
        $hex = bin2hex($bytes);
        $fields = [
            'time_low' => substr($hex, 0, 8),
            'time_mid' => substr($hex, 8, 4),
            'time_hi_and_version' => substr($hex, 12, 4),
            'clock_seq_hi_and_reserved' => substr($hex, 16, 2),
            'clock_seq_low' => substr($hex, 18, 2),
            'node' => substr($hex, 20, 12),
        ];
        return vsprintf(
            '%08s-%04s-%04s-%02s%02s-%012s',
            $fields
        );
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: UUID

Сообщение Nex-Otaku »

Пошли мериться строками кода )

Фриз, моя версия тоже Рэмси использует, просто через удобную обёртку.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: UUID

Сообщение vitalik1183 »

Ребят, а чем вариант из коробки бд не устраивает?
Yii2!
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: UUID

Сообщение Nex-Otaku »

UUID в коде
1. Создал объект
2. Записал в БД

UUID через БД
1. Создал объект
2. Записал в БД
3. Прочитал(!) из БД, чтобы узнать UUID
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: UUID

Сообщение vitalik1183 »

UUID в коде
1. Создал объект
2. Записал в БД
А вдруг коллизия выскочит?
Yii2!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

vitalik1183 писал(а): 2017.07.24, 07:35 Ребят, а чем вариант из коробки бд не устраивает?
ты говоришь про БД, но показываешь mysql.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

vitalik1183 писал(а): 2017.07.24, 09:31
UUID в коде
1. Создал объект
2. Записал в БД
А вдруг коллизия выскочит?
на моей жизни?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: UUID

Сообщение vitalik1183 »

ты говоришь про БД, но показываешь mysql.
не понял, это к чему и о чем? речь про mysql и шла выше
на моей жизни?
сугубо ваши сложности
Yii2!
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: UUID

Сообщение ElisDN »

zelenin писал(а): 2017.07.23, 23:08 и сравните с кодом, достаточным для генерации...
Значит нужно этот код оформить в либу, чтобы каждый раз не копипастить.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

vitalik1183 писал(а): 2017.07.24, 10:18
ты говоришь про БД, но показываешь mysql.
не понял, это к чему и о чем? речь про mysql и шла выше
это к тому, что хорошим тоном является не выносить логику в БД, тем более это работает по-разному на разных БД.
vitalik1183 писал(а): 2017.07.24, 10:18сугубо ваши сложности
это у вас сложности - у меня осталось uuid без коллизий на несколько моих жизней (а может на сотни лет - лень считать)
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: UUID

Сообщение vitalik1183 »

это к тому, что хорошим тоном является не выносить логику в БД, тем более это работает на разных БД.
ну про логику да. но в mysql есть же готовая функция.
это у вас сложности - у меня осталось uuid без коллизий на несколько моих жизней (а может на сотни лет - лень считать)
у меня нет сложностей, рад за вас, что у вас осталось что вам нужно без коллизий.
Yii2!
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: UUID

Сообщение Cacatuidae »

Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: UUID

Сообщение zelenin »

Cacatuidae писал(а): 2017.07.24, 11:02 Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
без обоснования? забавно.
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: UUID

Сообщение Cacatuidae »

zelenin писал(а): 2017.07.24, 11:07
Cacatuidae писал(а): 2017.07.24, 11:02 Я бы на месте автора реализовал генерацию ID по методу как это реализовано в Mongodb - objectID
https://docs.mongodb.com/manual/referen ... escription
без обоснования? забавно.
Мне нравится тем, что первые биты гарантируют сортировку по такому ID, правда, в пределах одной секунды (если не ошибаюсь)
Другие либы по генерации не изучал, возможно там тоже такие фишки есть.
Ответить