Случайная строка повторяется? - PullRequest
0 голосов
/ 21 мая 2011

У меня есть служба в интернете, где люди публикуют картинки и генерируют короткие строки. Только один может быть использован когда-либо. Тем не менее, я получаю дубликаты в базе данных, и я вижу серьезные проблемы.

Вот что я использую:

$id=rand(10000,99999);
$short_string = base_convert($id,20,36);

Как лучше всего это исправить? Проверить из базы данных и продолжать цикл, пока он не совпадает? Что если каждое возможное решение и оно идет по бесконечному циклу?

Ответы [ 5 ]

1 голос
/ 21 мая 2011

Вы пробовали использовать mt_rand() http://www.php.net/manual/en/function.mt-rand.php. Также вам следует увеличить диапазон.

1 голос
/ 21 мая 2011

Увеличивать последнее значение на случайную величину вместо использования случайного значения. Вот так:

$results = mysql_query("SELECT * FROM thetable ORDER BY theId DESC LIMIT 1");
$keyToUse = 1;
if($row = mysql_fetch_array($results)) {
    $keyToUse = (int)$row['theId'] + rand(1, 100);
}

Затем преобразуйте целочисленный ключ в любой формат, скажем, используя base_convert.

1 голос
/ 21 мая 2011

Введите ваш ПК с помощью алгоритма, который генерирует из него уникальное число, и укажите это через вашу функцию.

1 голос
/ 21 мая 2011

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

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

0 голосов
/ 21 мая 2011

Использовать md5 http://php.net/manual/en/function.md5.php Полученные строки не имеют конфликта (с большой вероятностью).

...