Создание собственного TinyURL

Я только что нашел этоотличный учебник так как это то, что мне нужно.

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

Вместо этого я подумал, есть ли способ добавить порядок в эту функцию? Так что все, что нужно сделать, это проверить предыдущую запись в БД и увеличить ключ. Так будет ли он всегда уникальным?

function generate_chars()

{

    $num_chars = 4; //max length of random chars
    $i = 0;
    $my_keys = "123456789abcdefghijklmnopqrstuvwxyz"; //keys to be chosen from
    $keys_length = strlen($my_keys);
    $url  = "";
    while($i<$num_chars)
    {
        $rand_num = mt_rand(1, $keys_length-1);
        $url .= $my_keys[$rand_num];
        $i++;
    }
    return $url;
}

function isUnique($chars)

{
    //check the uniqueness of the chars
    global $link;
    $q = "SELECT * FROM `urls` WHERE `unique_chars`='".$chars."'";
    $r = mysql_query($q, $link);
    //echo mysql_num_rows($r); die();
    if( mysql_num_rows($r)>0 ): 
        return false;
    else: 
        return true;
    endif;
}

Ответы на вопрос(13)

Ваш ответ на вопрос