Это хороший способ создать короткий UID для URL? - PullRequest
1 голос
/ 03 ноября 2010

Эй, ребята, я пытаюсь найти способ сгенерировать UID для размещения в URL. Прямо сейчас я ищу способы создания UID без использования последовательного индекса из БД. Это то, что я придумал.

Насколько я могу судить, дубликаты должны создаваться только в том случае, если они оба созданы в одну и ту же 1/10000-ю секунду.

function uid()
{
    list($usec, $sec) = explode(" ", microtime());

    $prec = 5;
    $usec = round($usec, $prec); 
    $sec = round($sec - ($sec / 1.001), $prec);

    $time = ($sec + $usec);

    return base_convert($time, 10, 36);
}

Любые идеи о том, почему эта функция будет плохой идеей?

Ответы [ 3 ]

0 голосов
/ 03 ноября 2010

Хорошо .. Может быть, потому, что целые числа автоинкремента в основном предназначены для этого? Еще есть возможность равных идентификаторов

0 голосов
/ 03 ноября 2010

Не изобретай велосипед. Хеш-функции, такие как MD5, SHA1, CRC32 и т. Д., Лучше всего подходят для этого. Имейте в виду, что чем короче ваш хэш-ключ, тем больше вероятность коллизий.

0 голосов
/ 03 ноября 2010

Почему вы не используете реальную функциональность uid в PHP? Это должно обеспечить действительно уникальные идентификаторы: http://php.net/manual/en/function.uniqid.php

Что касается UUID, совместимого с v4, проверьте эту тему: Функция PHP для генерации UUID v4

...