Создание собственного 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;
}